"Hallo, Amigo! Vandaag zal ik je vertellen wat een « adapter » precies is. Ik hoop dat je na het leren over dit onderwerp een veel beter begrip zult hebben van input/output-stromen."
Stel je voor dat je programma twee frameworks gebruikt die zijn geschreven door andere programmeurs/bedrijven. Beide frameworks zijn erg goed en gebruiken OOP-principes: abstractie, polymorfisme, inkapseling. Samen dekken ze bijna volledig af wat uw programma moet doen. Je blijft achter met een eenvoudige taak. U moet objecten die door het ene raamwerk zijn gemaakt, doorgeven aan het andere raamwerk. Maar beide frameworks zijn totaal verschillend en "weten niet van elkaar", dwz ze hebben geen gemeenschappelijke klassen. Je moet op de een of andere manier de objecten van het ene raamwerk omzetten in objecten van het andere.
Deze taak kan prachtig worden opgelost door de « adapter » techniek (ontwerppatroon) toe te passen:
Java-code | Beschrijving |
---|---|
|
Dit weerspiegelt het ontwerppatroon van de adapter.
Het basisidee is dat de klasse MyClass de ene interface naar de andere converteert (aanpast). |
"Kun je me een specifieker voorbeeld geven?"
"OK. Laten we zeggen dat elk raamwerk zijn eigen unieke "lijst"-interface heeft. Ze kunnen er ongeveer zo uitzien:"
Java-code | Beschrijving |
---|---|
|
Code uit het eerste ( Alpha ) framework
AlphaList is een van de interfaces waarmee de raamwerkcode kan communiceren met de code die het raamwerk gebruikt. |
|
AlphaList Manager AlphaListManager is een klasse in het framework. De methode createList maakt eenobject AlphaList |
|
Code uit het tweede ( Beta ) framework.
BetaList is een van de interfaces waarmee de raamwerkcode kan communiceren met de code die het raamwerk gebruikt. BetaSaveManager is een klasse in het framework. De saveList- methode slaat een BetaList- object |
|
«Adapter» klasse die converteert van de AlphaList- interface naar de BetaList- interface
De klasse ListAdapter implementeert de BetaList- interface van het tweede framework. Wanneer iemand deze methoden aanroept, "stuurt" de klassencode de oproepen door naar de lijstvariabele , een AlphaList uit het eerste framework. Een AlphaList- object wordt doorgegeven aan de ListAdapter- constructor De methode setSize werkt volgens de volgende regels: als de grootte van de lijst moet worden vergroot, voeg dan lege (null) items toe. Als de grootte van de lijst moet worden verkleind, verwijdert u items aan het einde. |
|
Een voorbeeld van hoe het gebruikt kan worden |
"Ik vond je laatste voorbeeld het leukst. Heel beknopt en begrijpelijk."
GO TO FULL VERSION