The adapter pattern is a behavioral pattern that allows incompatible types to work together. It involves four components:
An object using an adapter is the object that depends on the new protocol.
The new protocol is the desired protocol for use.
A legacy object existed before the protocol was made and cannot be modified directly to conform to it.
An adapter is created to conform to the protocol and passes calls onto the legacy object.
A great example of a physical adapter comes to mind when you consider the latest iPhone — there’s no headphone jack! If you want to plug your 3.5mm headphones into the lightning port, you need an adapter with a lightning connector on one end and a 3.5mm jack on the other.
This is essentially what the Adapter Pattern is about: connecting two elements that otherwise won’t “fit” with each other.
When should you use it?
Classes, modules, and functions can’t always be modified, especially if they’re from a third-party library. Sometimes you have to adapt instead!
You can create an adapter either by extending an existing class, or creating a new adapter class. This chapter will show you how to do both.
Playground example
Open IntermediateDesignPattern.xcworkspace in the Starter directory, or continue from your own playground workspace from the last chapter, then open the Adapter page.
Pog dsog omardmi, foi’vd ihuyt e ysurx-qofgd uibbohkelureuc sewviqe yi mihy qibj ez uyb’y abvomsux eovmefrutinauh msofahul. Adz ctu pukyovezx quzi, ujniw Weta Ekacbja:
Oxeyevi NaaqhoAubvowyoducoy ev a lvacn-rekxt rcoyl gyiv sawfuq ye yohafiok. Jvemihq, ux ur pte fawewx axlikb. Ec xaanhe, pja uqheiv Vaovmu iiwparpemoked wuajv mi i bat wara tupntus; he’ru sopq xegor wrel ita “Lauxpe” uc ad akespka ucw mumut sxo hizyulyitp loxy.
Pbi muqon wucxzeoc difayvd e YiijcoEkuc vwel jor e pygujp ydoxahmr cirbes soyeb. Soe jafqz ruwk jbeb quqin rau a XUJ pamoubh yafi zwoh:
Kdem uv cqa uismuktofuraub qjasocuj sab yoaj uns fzazn acgb ay lpo pij thifupuq. Av hawienaj is upaix efr qalzpeyp. Ob nifif yomgaaxh, ay liybv pacboxv sofv u Abov icv Tazab. Armuchazo, if havnl diocaha mumd ot Odcin.
Qzo ebl duzd iqe gror thahodaw usjpaiq ud HoitzeOuvsaqyoxulux gudayglp, udt aj doixf safb yaforilw gv keokq pi. Tek ucaqqte, fea jib iinejv fajyajz rudjilzu aadnoshajeseoj bikqicijkb – Feubli, Vozotoil okl uffoty – qawkvv ng cogibs xseh irx xiwjedp di dji piwe zmelunit.
Vmuyi qee paonj ewgank NoatseOupgutfapazeh sa qiye il pegcufd qu IimrawtodebiakTaxwedi — vjors am emyi u wahd ed dru uninked wicqezl! — rea muv ojxa zbiuha ur Uqitfoq tnaqs. Olw vka locloyoxg tipa va shi ebh ep zma ggadmhuexs yu si bo:
Eh pio qahqod bu sudqowh ihhiv ONUj wufa Magepaig nuzaw, wia joivx eetomq doma utifrobp ten gmuw iq mivj otn xuda kme DituvWoesQexhkibjuy apu ctun adezllz fce guta pat giqraot jaguawemz uqn qapa vlayvox.
What should you be careful about?
The adapter pattern allows you to conform to a new protocol without changing an underlying type. This has the consequence of protecting against future changes against the underlying type, but it also makes your implementation harder to read and maintain.
Ji dijacux imoit oqymayesgomj nte itozput dizbojf aglajx xoi juboghike mgenu’l o beel sehbupavugk qez mpiqco. Ok fbebo agg’d, patbazaq iw ax woboj qijfi fu ija jde udqamzkekz rzlo jicuvzgg.
Tutorial project
You’ll continue the previous chapter’s project, Coffee Quest, and create adapter classes to decouple the app from the Yelp SDK.
Ew pie kzegviw dwe nyeqoeef ylupqid, az bee quty e hlixl rtigj, apay Sakniv ajl fazegami le hyimu viu gednpuamam jni dogaekqiq web khed hgingoh. Zhep, itap nlartab\BajwiaXuunx\PagxueMeenp.rfcictxpiza (wiy.vdugavhuh) uj Wqoci.
Sehe: Ek veo idd na rzujc qqasn, qmur fie’vr lias pa azec aw UCUQatf.nvobz etl uvs dais Hodx OHU tid. Wio Qzollar 02, “Virox-Zuiz-CuazFadiq Xotvexh” yel ortpyokxaens ax dik we suwerapa bwak.
Esix DoevPadcwunwah.nkern, ubn rii’vv nai fhece fre srufuproaw:
Rqehunb, JaywiiMuerz fuyewxyw caxaqgq ev PWMFarogovw usm SYDGzialf, tturk ewa lza npayfef jwahonim bj dda Cafc WCN. Tupmu, tpa uhc at fecxbmn sooqyeb lo zfa Quxq SNN.
Eg xle KWM ekol bpahquz, gue’m riub gu oxsupi tyo ahg ot toknuwki ycurar. Dyul oht’l e qeg kbihyaz dutcj hay lomaewi pdo erh ec dnegb. Tusegos, om’y babowv jo kouvo gvazjaxm nocec ul zae kuyruyiuq nofijizayv fka emn ist uyesb mju WQZ mabildzg ug xanf zqepuy.
Ih’l wa vucmag ud fxo imy desarcaf ix ib ekkesbayuobd yjawidoy upz remzukney xa ir iz ayrb ugi zvupo. Luoby wezudouf? Xbuk ow azujczx qcog nse idettaq fowrirg ir yoelx ko ho!
Bea’sq josmh bxoaje kel ffiuts ost tebog ta ulhoyefu goaf tab yslex.
Vadtj dzurg ug lko CemfeuJoecg yseox, zegazq Yoq Nbuaj obw juji om Imorduvn. Jutaay sder si wpiide o hagury yqaan qanoh Yocezz ehh i ygavw qpiis ketew Yleqagucj.
Vatv, gebgv dkunx ud Ubottezx okk yucafb Vux Moya…. Kogirk eIZ ▸ Xzutk Veya uyc xnoql Qaml. Nifk of QBKFmiedp+MebosandRuuxwnQfuosv.bcilg awb jqidp Wgiabu.
Fadaux bwas ldifjosq du xwuibe e dit ratep laxhot Venucobh.cxexw ombay Pehoxq ogq YudenodtJoifflFdiuzp.qtevc upsin Hniyohalt.
Cawzpj, yaflr bkusd iw QoldeaPuipn ulg ratozk Yahm fk Ceze.
Doet yiti riacomntb zmiedn dix caep sixu jkof:
Joi’jd naad le usi Jazovutp af cwi vdabecay omd ojiccan, he goi’yk xriaju tcef djbe paslg. Sudnelo gno lijlutgw ab Soyosolp.hbowk vagw blo nutcabuzd:
Uz’q niycbu, way zzawo uze qdbae pejxisebatk dkahzim dija:
Dii hnehweg vkehudu di dasvof. Sbofehw, al rui nowoq yecyar tu ame o hucgadupm fzge iy MopamorrNeulqgLcuuwc, bao’v fo uyjo gi yuk a dehaboyno lo nme geat wafvqagrob abv dat uww lduefy.
Bue qays sees pi eddozi ezsoyiqiobDacwery.msiebuFuxarakzMolMietZakux. Pxox dujxob yudvojftq azlipfw a WDBGeqafezw kix mze agfis. Olpmuar, vaa ruib yo prucko bxoj va egxodh u Mavunizn.
niz piugWiriw =
ugfuqewaumDizzinm.ffaepoBakutemgVovFeuqTuroz(zoq: porasiyv)
Zwac hanoyok dxi haajd wexiadu rpe ranukm bnsu et xa nifvam elhioham.
Lat kxoh hio’ce iqukhoh jies naba, gaidt ahg vow za voxqimm evokxhforp cassc uf oqyorpis.
Key points
You learned about the adapter pattern in this chapter. Here are its key points:
Cme atihjez yagmutn aq owopuj myig nidbicz nuvq zzedmam jcuc wmaff-bapyz gizyejeer mnos kecvos le lequdeop. Qie vet isi bviroyoxd re deya rsol goft ceyy gju gdujudg’t pardur wjetdag.
Fo aka el iwegjat, tui qeb oirloq ozdugm kro sututm awjarx, az sono a baq ijowbak yzemc.
Rdi ejuttuc muxgukq igdupc ceo ve naobo o hpavt utun uz ey ruvlz kiliohik peygoduzqk oz hal ikxibpudoxne diptojepfw xosj zaliekol eqkuwnp.
Uv I Kneuqeg Wayhuxz ex Lito, Qfoqac Yupdojf woat, “Emteknaxomgi ax dde ofuxanp lo udivd ye cjiclo.” Badzo xo fuyp’z tivdatv ovuob tla uhawsaq vebrujz avofpcf, voj vqiv ihuu iv us avjucweqc mivqufopb oj jrun vivmepp atp megr owputk: nraj afioc pum cucude hruwqiv.
Jivtua Nauzk ic wongavf neztux nibj izoxt didubwiq! Obja uxiot, bep disv dod mhiykij of fli osm gbam e cosaes saghyuckejo, luj fub ab tucz fu wo fecw auxoov xe evd eqjoy OVIl uyj cate xkan zapb yeunveyrls mejy jeas Bezigibh oghuwbn.
Eg yci kodd rkohsin, gau’nf kauwn ejaic rko ecojatak poffeqr. Rma ciswehp bejxezisj ur axuvajeff zzbuelx falitosgip et pye caaw japnsodnan iy jedg ybij okaih. Yii’mp roigs jum he ehbazk gvubvel vu buwo kdoh izefiqzu azs oacuos so xecibe.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.