Java Reference
In-Depth Information
x einen klassenbasierten Adapter (im Folgenden kurz Klassen-Adapter genannt) und
x einen objektbasierten Adapter (kurz Objekt-Adapter genannt).
Der Klassen-Adapter ist zur Client-Klasse hin identisch aufgebaut wie der Objekt-
Adapter. Beide Varianten werden nachfolgend vorgestellt:
Variante 1: Klassen-Adapter (Adapter mit Vererbung)
Der Client benutzt die im Interface IZiel aufgelisteten Köpfe der Operationen. Die
Klasse Adapter implementiert das Interface und leitet zugleich von der zu adaptie-
renden Klasse ab, um an die Schnittstelle der zu adaptierenden Klasse zu gelangen.
Die Klasse Adapter verwendet für den Aufruf der "alten" Ope-
rationen einfach eine Selbstdelegation an den ererbten Anteil. Die
zu adaptierende Klasse stellt die anzupassende Komponente dar.
Die Klasse Adapter setzt beispielsweise den Aufruf einer Operation operationA()
durch den Client in den Aufruf der von der zu adaptierenden Klasse geerbten Opera-
tion operationB() um. Der Client ruft in diesem Fall also indirekt die Operation
operationB() auf, wenn er direkt beim Adapter die Operation operationA() auf-
ruft. Innerhalb der Operation operationA() können Konvertierungen der Parameter
oder des Rückgabewerts, aber auch komplexere Anpassungen vorgenommen werden.
Das folgende Bild 4-1 zeigt das Klassendiagramm des klassenbasierten Adapter-Mus-
ters:
«use»
ZuAdaptierendeKlasse
«interface»
IZiel
Client
operationB()
operationA()
Adapter
ruft auf:
this.operationB()
operationA()
Bild 4-1 Klassendiagramm Klassen-Adapter
Zu bemerken ist, dass in dieser Lösung der Adapter alle Metho-
den - auch die der zu adaptierenden Klasse - anbietet, falls die
verwendete Programmiersprache wie im Falle von Java keine pri-
vate Vererbung zur Verfügung stellt. Im strengen Sinn handelt es
sich wegen der übrigen geerbten Methoden der anzupassenden
Klasse um keinen echten Adapter.
Vorsicht!
Search WWH ::




Custom Search