"Hej, Amigo! I dag vil jeg fortælle dig, hvad en " adapter " præcis er. Jeg håber, at efter at have lært om dette emne, vil du have en meget bedre forståelse af input/output-streams."
Forestil dig, at dit program bruger to rammer skrevet af andre programmører/virksomheder. Begge rammer er meget gode og bruger OOP principper: abstraktion, polymorfi, indkapsling. Tilsammen dækker de næsten fuldstændigt, hvad dit program skal gøre. Du står tilbage med en simpel opgave. Du skal overføre objekter, der er oprettet af den ene ramme, til den anden ramme. Men begge rammer er helt forskellige og "ved ikke om hinanden", dvs. de har ingen klasser til fælles. Du skal på en eller anden måde konvertere objekterne i den ene ramme til objekterne i den anden.
Denne opgave kan smukt løses ved at anvende « adapter »-teknikken (designmønster):
Java kode | Beskrivelse |
---|---|
|
Dette afspejler adapterens designmønster.
Den grundlæggende idé er, at MyClass-klassen konverterer (tilpasser) den ene grænseflade til den anden. |
"Kan du give mig et mere specifikt eksempel?"
"OK. Lad os sige, at hver ramme har sin egen unikke "liste"-grænseflade. De kan se nogenlunde sådan ud:"
Java kode | Beskrivelse |
---|---|
|
Kode fra den første ( Alpha ) ramme
AlphaList er en af de grænseflader, der gør det muligt for rammekoden at interagere med den kode, der bruger rammen. |
|
AlphaList Manager AlphaListManager er en klasse i rammen. Dens createList-metode opretter et AlphaList- objekt |
|
Kode fra den anden ( Beta ) ramme.
BetaList er en af de grænseflader, der gør det muligt for rammekoden at interagere med den kode, der bruger rammen. BetaSaveManager er en klasse i rammen. Dens saveList- metode gemmer et BetaList- objekt |
|
«Adapter»-klasse, der konverterer fra AlphaList- grænsefladen til BetaList- grænsefladen
ListAdapter - klassen implementerer BetaList- grænsefladen fra den anden framework. Når nogen kalder disse metoder, «sender» klassekoden kaldene til listevariablen , som er en AlphaList fra den første ramme. Et AlphaList- objekt sendes til ListAdapter -konstruktøren SetSize - metoden fungerer i henhold til følgende regler: hvis størrelsen på listen skal øges, skal du tilføje tomme (nul) elementer. Hvis størrelsen på listen skal reduceres, skal du slette elementer til sidst. |
|
Et eksempel på hvordan det kan bruges |
"Jeg kunne mest af alt lide dit sidste eksempel. Meget kortfattet og forståeligt."
GO TO FULL VERSION