Adapter
Problem
Ein Onlineshop versendet Bestellbestätigungen über die Schnittstelle EmailSender.send(to, subject, body).
Die Bibliothek eines neuen E-Mail-Anbieters erwartet stattdessen deliver(message), mit Empfänger, Betreff und Text in einem Nachrichtenobjekt. Der Shop braucht eine Verbindung zu diesem Anbieter, während seine bestehende E-Mail-Schnittstelle erhalten bleibt.
Lösung — Adapter
Ein EmailAdapter implementiert EmailSender. Der Shop ruft die send()-Methode des Adapters auf; der Adapter erstellt das Nachrichtenobjekt des Anbieters, ruft deliver(message) an und übersetzt das Ergebnis für den Shop zurück.
Shop → EmailAdapter.send(to, subject, body) → Anbieterbibliothek.deliver(message)
Kerngedanke: Ein Adapter übersetzt die Schnittstelle des Aufrufers in die Schnittstelle, die eine andere Komponente benötigt.