Muster: Adapter

Aus Wikibooks

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[Bearbeiten] Adapter

Ein Adapter passt die Schnittstelle einer (externen) Funktionalität an.

[Bearbeiten] Zweck

Es wird ermöglicht eine Anwendung gegen ein Interface zu schreiben, welches auf eine externe Funktionalität (z.B. Bibliothek eines Fremdherstellers) verweist. Dabei wird eine Unterklasse dieses Interfaces verwendet, um die externe Klasse anzusteuern. Notwendig ist dies beispielsweise, wenn auf eine Bibliothek zugegriffen werden soll, die Parametertypen allerdings nicht den im restlichen Programm Verwendeten entsprechen - ein Adapter kann hier eine Konvertierung vornehmen und den Aufruf dann weiterleiten.

[Bearbeiten] UML

Bild:Adapter-pattern.png

[Bearbeiten] Entscheidungshilfen

Wenn die Funktionalität extern bereits zur Verfügung steht, jedoch nicht zu der Funktionsweise bzw. zum internen Aufbau (z.B. Namensgebung, Parametertypen) passt, dann kann ein Adapter eingesetzt werden. Allerdings sollte im Einzelfall geprüft werden, ob stattdessen nicht ein Refactoring der bereits bestehenden Funktionalität dem Einsatz eines Adapters vorzuziehen wäre - was natürlich nur dann möglich ist, wenn der Quellcode vorliegt.

[Bearbeiten] Implementation

  • Ein Interface, welches die Funktionalität des Adapters definiert.
  • Eine konkrete Implementierung des Adapters, welche sich der externen Funktionalität bedient, um die angebotene Schnittstelle zu realisieren.

Neben der Architektur, wie sie in obigem UML-Diagram skizziert ist, ist es auch möglich, dass der Adapter zusätzlich von der externen Klasse erbt.

Beispiele sind verfuegbar in den Sprachen

[Bearbeiten] Verwandte Muster

Eine Brücke (engl. Bridge) kann verwendet werden, um flexibel zwischen verschiedenen Adaptern zu wechseln. Der Stellvertreter reicht Aufrufe ebenfalls weiter - allerdings mit dem Unterschied, dass dieser und die Klasse, die die eigentliche Funktionalität bereitstellt, dieselbe Schnittstelle aufweisen; der Mechanismus ist also dem des Adapters ähnlich, der Zweck jedoch ein anderer.

[Bearbeiten] Weblinks

Wikipedia: Adapter (Entwurfsmuster)


Hoch zum Inhaltsverzeichnis
Persönliche Werkzeuge