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


Beispiel

Wenn man im täglichen Leben an einen Adapter denkt so muß man gleich an das Überbrücken von unterschiedlichen Steckerarten in unterschiedlichen Ländern denken. Und in der Tat läßt sich diese Vorstellung auch auf die objektorientierte Programmierung übertragen. Denn solche Stecker sind ja nichts weiter als Schnittstellen, die zwar alle unterschiedlich aussehen, aber nahezu den gleichen Zweck haben. Der Adapter soll nun die Nutzung der anderen Steckdose bzw. Schnittstelle über Umwege so realisieren, daß am eigentlichen Gerät oder Quelltext nichts geändert werden braucht.

Wir alle kennen unsere tollen Filemanager von heute, die es schaffen sich in einem Archiv genauso zu bewegen als wäre man direkt auf dem Filesystem. Eine Möglichkeit diese Transparenz zu schaffen ist das Verwenden eines Adapters, der zwischen den Dateisystemobjekten und dem Archiv zwischengeschaltet wird und so den Eindruck verschafft man bewegt sich immer noch im normalem Filesystem.



Beschreibung

Übertragen wir das Pattern auf unser Beispiel, so ist das Hauptprogramm der Klient, der mit der Dateiklasse umgehen kann, nicht aber mit der ZIP-Klasse. Die Dateiklasse ist also unsere Zielklasse und die ZIP-Klassen die zu adaptierenden Klassen. Wir haben hier 2 Klassen zu adaptieren, einmal die Klasse für die ZIP-Datei selber und einmal die Klasse für die eigentlichen archivierten Dateien.

 Abb. 2: Struktur des Beispiels


In der Praxis wird dann anstatt eines normalen File-Objektes für das Zip-Archiv ein ZipFileAdapter-Objekt zurückgeliefert, welches ein Verzeichnis simuliert. Innerhalb dieses "Zip-Verzeichnisses" wird dann mit ZipEntryAdapter-Objekten hantiert, welche die Zip-Einträge als normale Dateien bzw. Verzeichnisse abbilden. So macht es für einen Filemanager keinen Unterschied, ob es nun eine normale Datei oder eine gezippte Datei ist.


[ Übersicht ] [ Beispiel ] [ Quellen ] [ Home Entwurfsmuster ]
Stand: 31.03.2005