# data[].attributes.body
Der Adapter implementiert die Schnittstelle und erbt von der Klasse des Dienstes. Der Adapter besitzt also auch die Methoden des Dienstes.
Somit kann der Adapter Anfragen an sich selbst delegieren.
In Programmiersprachen, die private Vererbung und Mehrfachvererbung zulassen, ist das eine elegante Variante.
Eine explizite Umsetzung ist im Bild unten zu sehen.

# data[].attributes.body
Der Adapter implementiert das Schnittstelle und verfügt über ein Objekt des Dienstes als Attribut. Somit werden Anfragen an den Adapter an das Objekt delegiert.
Diese Variante sollte in Java genutzt werden.
Eine explizite Umsetzung ist im Bild unten zu sehen.

# data[].attributes.body
Adapter können auf zwei Arten realisiert werden.

# data[].attributes.body
Übersetzt eine Schnittstelle in eine andere

# data[].attributes.body
Diese Klasse bietet eine Funktionalität, z.B. eine Methode

# data[].attributes.body
Die Klasse die Dienste nutzt

# data[].attributes.body
Hilfsmittel, das sich wie Mini Display Port bedienen lässt aber den Beamer anspricht

# data[].attributes.body
Wir benötigen einen "Übersetzer" zwischen den verschiedenen Schnittstellen: Ein Adapter, der die benötigte Schnittstelle hat und auf den Dienst zugreifen kann

# data[].attributes.body
Diese Klasse bietet eine Funktionalität, z.B. eine Methode

# data[].attributes.body
Student kann nur Mini Display Port bedienen, will aber den Beamer nutzen

# data[].attributes.body
Die Klasse die Dienste nutzt

# data[].attributes.body
Eine Klasse (Klient) soll mit einer anderen Klasse (Dienst) interagieren, der Dienst besitzt aber die Schnittstelle (bzw. den Standard) nicht, die vom Klient angesprochen wird.
Der Klient und der Dienst sind NICHT kompatibel.

Man kann den Dienst auch nicht passend bearbeiten (z.B. wenn dieser aus einer externer Bibliothek ist)