Ein Adapter im mechanischen Sinn dient der Verbindung zweier verschiedener Geräte. Diese Eigenschaft lässt sich auf Schnittstellen in der Programmierung ebenfalls anwenden. Das Adapter Pattern passt die API (Schnittstelle) einer gegebenen Klasse an die davon abweichende Erwartungen einer Implementierung an. Vorkommen könnte dies zum Beispiel beim Aufeinandertreffen zweier Bibliotheken von verschiedenen Autoren.
Ein Beispiel:
DispatcherInterface
Die konkrete Implementierung stellt für einen Dispatcher folgendes Interface zur Verfügung.
interface DispatcherInterface { public function init(); public function run(); }
Dispatcher
Folgender Dispatcher wird bereit gestellt. Leider bietet dieser nicht die gewünschten Methoden und implementiert auch nicht das gegebene Interface.
class Dispatcher { public function prepare() { } public function preProcess() { } public function postProcess() { } public function execute() { } }
DispatcherAdapter
Aus jetzt nicht weiter erläuterbaren Gründen ;-) besteht keine Möglichkeit Implementierung oder Dispatcher anzupassen. Dadurch kommt der (Dispatcher-)Adapter zum Einsatz, um Abhilfe zu schaffen.
class DispatcherAdapter implements DispatcherInterface { private $_dispatcher; public function __contruct(Dispatcher $dispatcher) { $this->_dispatcher = $dispatcher; } public function init() { $this->_dispatcher->prepare(); } public function run() { $this->_dispatcher->preProcess(); $this->_dispatcher->execute(); $this->_dispatcher->postProcess(); } }
Der Adapter implementiert das gegebene Interface und mapped die Methoden auf die des konkreten Dispatchers. Dadurch werden Methoden "umbennannt" oder zusammengefasst und somit die notwendige API geschaffen.
Neueste Kommentare
vor 2 Wochen 2 Tage
vor 3 Wochen 2 Stunden
vor 12 Wochen 5 Tage
vor 13 Wochen 8 Stunden
vor 22 Wochen 5 Tage
vor 22 Wochen 5 Tage
vor 30 Wochen 2 Tage
vor 30 Wochen 2 Tage
vor 33 Wochen 4 Tage
vor 34 Wochen 1 Tag