Einsatz

Das "Adapter Pattern" kommt zur Anwendung, wenn die Schnittstelle einer Klasse in die Schnittstelle einer anderen Klasse überführt werden soll.

Beispiele

  • Die WindowListener Klasse in Java hat eine Adapterklasse WindowAdapter, welche die Schnittstelle der WindowListener Klasse implementiert. Von WindowAdapter abgeleitete Klassen brauchen nur noch die Methoden zu implementieren, die für sie interessant sind.

  • Ein Beispiel aus der realen Welt sind Adapter im HiFi-Bereich. So exestieren zum Beispiel Adapter fü Klinke auf Chinch oder für Kopfhöhrer-Klinken von 3,5mm auf 6,3mm Klinke.

Merkmale / Elemente

  • Eine Klasse (Client), die eine bestimmte Schnittstelle zur Erfüllung einer Aufgabe erwartet.

  • Eine konkrete Schnittstelle, welche die vom Client erwartete Schnittstelle definiert.

  • Eine Klasse, welche die Funktionalität bereitstellt, aber eine andere Schnittstellendefinition aufweist.

  • Eine Adapterklasse welche die abweichende Schnittstelle in die erwartete Schnittstelle überführt.

Grundsätzlich stehen zwei Formen der Implementierung zur Verfügung:

  • Klassenbasierte Adapter
  • Objektbadierte Adapter

Klassenbasierte Adapter

Die nachfolgende Grafik zeigt ein Klassendiagramm eines klassenbasierten Adapters:

Klassendiagramm eines klassenbasierten Adapters

Beim klassenbasierten Adapter erweitert der Adapter sowohl die Zielklasse als auch die zu adaptierende Klasse. Beim Aufruf von Methoden der Zielklasse, ruft der Adapter die ensprechende Methode der zu adaptierenden Vaterklasse auf.

Da in Java eine Mehrfachvererbung nicht möglich ist, kann mit Java kein klassenbasierter Adapter realisiert werden.

Objektbasierter Adapter

Nachfolgend ein Klassendiagramm für einen objektbasierten Adapter:

Klassendiagramm eines objektbasierten Adapters

Ein objektbasierter Adapter unterscheidet sich vom klassenbasierten dadurch, dass der Adapter nur noch von der Zielklasse abgeleitet wird. Die zu adaptierende Klasse wird vom Adapter direkt verwendet.

Pattern Links - itmapa.de

de.wikipedia.org
Adapter
http://de.wikipedia.org/wiki/Adapter_%28Entwurfsmuster%29

Stephan Huth
http://wwwswt.informatik.uni-rostock.de
Adapter (klassenbasiert)
http://wwwswt.informatik.uni-rostock.de/deutsch/Infothek/Entwurfsmuster/patterns/AdapterClass/index.html

http://wwwswt.informatik.uni-rostock.de
Adapter (objektbasiert)
http://wwwswt.informatik.uni-rostock.de/deutsch/Infothek/Entwurfsmuster/patterns/AdapterObject/index.html