Adapter (klassenbasiert) [ Übersicht ] [ Beispiel ] [ Quellen ] [ Home Entwurfsmuster ]


Beispiel - Java

Im Beispiel wurde davon ausgegangen, daß man eine Klasse besitzt, die in der Lage ist, eine Linie zu zeichnen. Nun möchte man eine Klasse erstellen, die ein Rechteck mahlen soll. Es soll dabei die Methode der Linien-Klasse verwendet werden. Die Implementation unterscheidet sich zwischen Eiffel und Java, da Java keine Mehrfachvererbung unterstützt, muß dort über Interfaces gegangen werden. Weiterhin gibt es in Java die Möglichkeit Applets zu erstellen, und auf deren paint-Routine zuzugreifen. so ergibt sich folgende Implementation für Java:

Methode drawLine in DrawLine : drawLine(int x1, int y1, int x2, int y2)
Methode drawRectangle in DrawRectangle :  drawRectangle(int x1, int y1, int h, int w)


 Abb. 2: Der klassenbasierte Adapter für die Java-Implementation


Beispiel in Java als Applet:

Java-Applet



Das obere Rechteck wurde von unserem Adapter mit Hilfe der Methode drawLine(int x1, int y1, int x2, int y2)im LineDrawer gezeichnet. Die Line darunter einfach die Anwendung der drawLine-Methode.


Beispiel - Eiffel

In Eiffel wurde derselbe Sachverhalt als Ausgabe auf einer Konsole implementiert. Die Klassen -und Methoden Implementation lautet:

Methode drawLine in DrawLine : drawLine(laenge:integer)
Methode drawRectangle in DrawRectangle :  drawRectangle(hoehe:integer; breite:integer)


 Abb. 3: Der klassenbasierte Adapter für die Eiffel-Implementation


Ausgabe der Konsole in Eiffel:

 Abb. 4: Ausgabe der Konsole in Eiffel

Erläuterungen : Die obere Linie wurde von der Methode drawLine(l:integer) im LineDrawer gezeichnet. Das Untere Gebilde soll das Rechteck mit der Hoehe 20 und der Breite 50 darstellen. Dieses Rechteck wurde mit der Methode drawLine(l:integer) aus dem LineDrawer realisiert.

Auf den Punkt gebracht:

Klassen  Methoden
Zielklasse DrawRectangle   drawRectangle
zu adaptierende Klasse  DrawLine  drawLine


[ Übersicht ] [ Beispiel ] [ Quellen ] [ Home Entwurfsmuster ]
Stand: 31.03.2005, Autor: Stephan Huth