www.wikidata.uk-ua.nina.az
Adapter Adapter strukturnij shablon proyektuvannya priznachenij dlya organizaciyi vikoristannya funkcij ob yektu nedostupnogo dlya modifikaciyi cherez specialno stvorenij interfejs Zmist 1 Priznachennya 2 Zastosuvannya 3 Struktura 4 Uchasniki 5 Naslidki 6 Perevagi ta nedoliki 6 1 Perevagi 6 2 Nedoliki 7 Zv yazok z inshimi paternami 8 Realizaciya 8 1 C 8 2 Java 9 Zauvazhennya i komentari 10 Vidomi zastosuvannya 11 Primitki 12 Dzherela 13 LiteraturaPriznachennya RedaguvatiAdaptuye interfejs odnogo klasu v inshij ochikuvanij kliyentom Adapter zabezpechuye robotu klasiv z nesumisnimi interfejsami ta najchastishe zastosovuyetsya todi koli sistema pidtrimuye neobhidni dani i povedinku ale maye nevidpovidnij interfejs Zastosuvannya RedaguvatiAdapter peredbachaye stvorennya klasu obolonki z neobhidnim interfejsom Struktura Redaguvati nbsp UML diagrama sho ilyustruye strukturu shablonu proyektuvannya Adapter z vikoristannyam mnozhinnogo nasliduvannya Uchasniki RedaguvatiKlas Adapter privodit interfejs klasu Adaptee u vidpovidnist z interfejsom klasu Target spadkoyemcem yakogo ye Adapter Ce dozvolyaye ob yektovi Client vikoristovuvati ob yekt Adaptee tak nemov vin ye ekzemplyarom klasu Target Naslidki RedaguvatiShablon Adapter dozvolyaye vklyuchati vzhe nayavni ob yekti v novi ob yektni strukturi nezalezhno vid vidminnostej v yihnih interfejsah Perevagi ta nedoliki RedaguvatiPerevagi Redaguvati Dopomagaye dosyagti bagatorazovogo vikoristannya ta gnuchkosti Klas kliyenta ne uskladnyuyetsya neobhidnistyu vikoristovuvati inshij interfejs i mozhe vikoristovuvati polimorfizm dlya obminu mizh riznimi realizaciyami adapteriv Nedoliki Redaguvati Vsi zapiti peresilayutsya tomu sposterigayetsya neznachne zbilshennya nakladnih vitrat Inodi bagato adaptacij potribni po lancyugu adaptera shob dosyagti potribnogo tipu Zv yazok z inshimi paternami RedaguvatiFasad stvoryuye novij interfejs dostupu adapter vikoristovuye starijRealizaciya RedaguvatiInterfejs klasu Adaptee tobto togo yakij adaptuyetsya privoditsya u vidpovidnist z novimi vimogami klasu Target a vikliki jogo metodiv peretvoryatsya u vikliki metodiv klasu Target Shablon Adapter dlya adaptaciyi interfejsu metodu iv Adaptee do interfejsu Target v Adapter mozhna realizuvati yak minimum dvoma sposobami vikoristovuyuchi kompoziciyu uspadkuvannya Adapter ob yekta abo vikoristovuyuchi mnozhinne uspadkuvannya Adapter klasu Adapter ob yekta Adapter nasliduye interfejs vid Target uspadkuvannya ta mistit primirnik zdebilshogo yak vkazivnik klasu Adaptee kompoziciya i deleguye vikliki svoyih metodiv yaki zbigayutsya z interfejsom Target do Adaptee Adapter klasu Adapter nasliduye interfejsi oboh klasiv Target ta Adaptee mnozhinne uspadkuvannya V OOP movah yaki ne pidtrimuyut mnozhinne uspadkuvannya realizaciya cogo variantu adaptera desho skladnisha napriklad v Java za dopomogoyu interfejsiv C Redaguvati Priklad realizaciyi na movi S include lt iostream gt using namespace std Target Cil struct CShape virtual CShape virtual void Draw cout lt lt Rectangle lt lt endl Adaptee Budemo adaptuvati struct CTextViewer CTextViewer virtual CTextViewer void DrawText cout lt lt Text lt lt endl Adapter Adapter klasu struct CTextShape public CShape protected CTextViewer CTextShape virtual CTextShape virtual void Draw DrawText Viklik metoda klasu sho adaptuyemo Adapter ob yekta struct CTextShapeOBJ public CShape CTextViewer shape virtual void Draw shape DrawText Viklik metoda klasu sho adaptuyemo Client void DrawObject CShape p p gt Draw void main Stvoryuyemo adapter i malyuyemo ob yekt CShape obj new CTextShape DrawObject obj delete obj CTextShapeOBJ adapt CTextViewer obj2 adapt shape obj2 adapt Draw Java Redaguvati Priklad realizaciyi na movi Java interface LightningPhone void recharge void useLightning interface MicroUsbPhone void recharge void useMicroUsb class Iphone implements LightningPhone private boolean connector Override public void useLightning connector true System out println Lightning connected Override public void recharge if connector System out println Recharge started System out println Recharge finished else System out println Connect Lightning first class Android implements MicroUsbPhone private boolean connector Override public void useMicroUsb connector true System out println MicroUsb connected Override public void recharge if connector System out println Recharge started System out println Recharge finished else System out println Connect MicroUsb first exposing the target interface while wrapping source object class LightningToMicroUsbAdapter implements MicroUsbPhone private final LightningPhone lightningPhone public LightningToMicroUsbAdapter LightningPhone lightningPhone this lightningPhone lightningPhone Override public void useMicroUsb System out println MicroUsb connected lightningPhone useLightning Override public void recharge lightningPhone recharge public class AdapterDemo static void rechargeMicroUsbPhone MicroUsbPhone phone phone useMicroUsb phone recharge static void rechargeLightningPhone LightningPhone phone phone useLightning phone recharge public static void main String args Android android new Android Iphone iPhone new Iphone System out println Recharging android with MicroUsb rechargeMicroUsbPhone android System out println Recharging iPhone with Lightning rechargeLightningPhone iPhone System out println Recharging iPhone with MicroUsb rechargeMicroUsbPhone new LightningToMicroUsbAdapter iPhone Output Recharging android with MicroUsb MicroUsb connected Recharge started Recharge finished Recharging iPhone with Lightning Lightning connected Recharge started Recharge finished Recharging iPhone with MicroUsb MicroUsb connected Lightning connected Recharge started Recharge finishedZauvazhennya i komentari RedaguvatiShablon Adapter dozvolyaye v procesi proyektuvannya ne brati do uvagi mozhlivi vidminnosti v interfejsah vzhe nayavnih klasiv Yaksho ye klas sho volodiye neobhidnimi metodami i vlastivostyami prinajmni konceptualno to pri neobhidnosti zavzhdi mozhna skoristatisya shablonom Adapter dlya privedennya jogo interfejsu do potribnogo viglyadu Bilsh prijnyatnim ye adapter ob yekta v yakomu vikoristovuyetsya kompoziciya uspadkuvannya oskilki ce bilsh vidpovidaye pravilu nadavajte perevagu kompoziciyi a ne uspadkuvannyu Cej adapter mozhna vikoristovuvati tilki odnostoronno yak zaminu dlya Target Odnak u vipadku koli mi stvoryuyemo dvostoronnij adapter abo zh adapter yakij adaptuye odnochasno kilka Adaptee klasiv slid nadavati perevagu shablonu adaptera klasu Takozh adapter klasu dozvolyaye bilsh efektivno vikoristovuvati vzhe realizovanij kod z Target ta Adaptee Odnak nedoliki adaptera klasu viplivayut z mnozhinnogo uspadkuvannya koli zmini v deyakih bazovih klasah viklikayut neperedbachlivi zmini v pohidnih a osoblivo koli ce vidbuvayetsya odnochasno v kilkoh uspadkovanih adapterom klasah Blizkim Adapteru ye shablon Fasad ne zavzhdi mozhna vidrizniti odin vid drugogo Riznicya polyagaye v tomu sho shablon Fasad priznachenij dlya sproshennya interfejsu i stvoryuye novij interfejs todi yak shablon Adapter vikoristovuye z oboh storin interfejsi yaki ye v nayavnosti i zabezpechuye yih funkciyuvannya Vidomi zastosuvannya RedaguvatiTipovim prikladom vikoristannya shablonu Adapter mozhna nazvati stvorennya klasiv sho privodyat do yedinogo interfejsu funkciyi movi PHP sho zabezpechuyut dostup do riznih SUBD 1 Primitki Redaguvati V movi PHP dostup do SUBD realizovanij u viglyadi naboru funkcij dlya kozhnoyi SUBD voni mayut rizni najmenuvannya i inodi riznij nabir vikoristovuvanih parametriv sho privodit do znachnih problem pri perehodi z odniyeyu SUBD na inshu yaksho takij perehid napered ne zabezpechenij vikoristannyam shablonu Adapter Dzherela RedaguvatiAdapter pattern Arhivovano 13 zhovtnya 2007 u Wayback Machine Design Patterns Elements of Reusable Object Oriented Software Arhivovano 9 listopada 2012 u Wayback Machine Chim vidriznyayetsya dekorator vid adaptera I pro fasad Arhivovano 22 grudnya 2014 u Wayback Machine Blog odnogo kiberaLiteratura RedaguvatiAlan Shallouej Dzhejms R Trott Shablony proektirovaniya Novyj podhod k obektno orientirovannomu analizu i proektirovaniyu Design Patterns Explained A New Perspective on Object Oriented Design M Vilyams 2002 288 s ISBN 0 201 71594 5 Otrimano z https uk wikipedia org w index php title Adapter shablon proyektuvannya amp oldid 39185111