"Hei, Amigo! I dag skal jeg fortelle deg nøyaktig hva en « adapter » er. Jeg håper at etter å ha lært om dette emnet vil du ha en mye bedre forståelse av input/output-strømmer."
Tenk deg at programmet ditt bruker to rammeverk skrevet av andre programmerere/selskaper. Begge rammeverkene er veldig gode og bruker OOP-prinsipper: abstraksjon, polymorfisme, innkapsling. Sammen dekker de nesten helt det programmet ditt trenger å gjøre. Du sitter igjen med en enkel oppgave. Du må overføre objekter opprettet av ett rammeverk til det andre rammeverket. Men begge rammene er helt forskjellige og «vet ikke om hverandre», dvs. at de ikke har noen klasser til felles. Du må på en eller annen måte konvertere objektene til det ene rammeverket til objektene til det andre.
Denne oppgaven kan løses vakkert ved å bruke « adapter »-teknikken (designmønster):
Java-kode | Beskrivelse |
---|---|
|
Dette gjenspeiler adapterdesignmønsteret.
Den grunnleggende ideen er at MyClass-klassen konverterer (tilpasser) det ene grensesnittet til det andre. |
"Kan du gi meg et mer spesifikt eksempel?"
"OK. La oss si at hvert rammeverk har sitt eget unike "liste"-grensesnitt. De kan se omtrent slik ut:"
Java-kode | Beskrivelse |
---|---|
|
Kode fra det første ( alfa ) rammeverket
AlphaList er et av grensesnittene som lar rammekoden samhandle med koden som bruker rammeverket. |
|
AlphaList Manager AlphaListManager er en klasse i rammeverket. CreateList-metoden oppretter et AlphaList- objekt |
|
Kode fra det andre ( Beta ) rammeverket.
BetaList er et av grensesnittene som lar rammekoden samhandle med koden som bruker rammeverket. BetaSaveManager er en klasse i rammeverket. SaveList- metodenlagrer et BetaList- objekt |
|
«Adapter»-klassen som konverterer fra AlphaList- grensesnittet til BetaList- grensesnittet
ListAdapter - klassen implementerer BetaList- grensesnittet fra det andre rammeverket. Når noen kaller disse metodene, «sender» klassekoden kallene til listevariabelen , som er en AlphaList fra det første rammeverket. Et AlphaList- objekt sendes til ListAdapter -konstruktøren SetSize - metoden fungerer i henhold til følgende regler: hvis størrelsen på listen må økes, legg til tomme (null) elementer. Hvis størrelsen på listen må reduseres, slett elementer på slutten. |
|
Et eksempel på hvordan det kan brukes |
"Jeg likte det siste eksemplet ditt mest av alt. Veldig kortfattet og forståelig."
GO TO FULL VERSION