Dekorierer

Bearbeiten

Der Dekorierer (engl. decorator) wird dazu verwendet um zur Laufzeit Funktionalität zu einem Objekt hinzuzufügen.

Wenn man ein Objekt zur Laufzeit dynamisch um eine bestimmte Funktionalität erweitern will, d.h. man will, dass die Funktion, welche bei einem Methodenaufruf ausgeführt wird, um weitere Funktionalität ergänzt wird. Dies ist im GUI Bereich häufig der Fall. Wenn zum Beispiel die Funktion zum Zeichnen eines Zeichens um das Zeichnen eines Rahmens ergänzt werden soll, dann kann ein Dekorator verwendet werden.

Dieser Abschnitt wird dir die Notation in der UML zeigen. Dies wird hilfreich sein, wenn du mit modernen Entwicklungswerkzeugen (vorhandene) Projekte "begutachtest".

Entscheidungshilfen

Bearbeiten

PRO:

  • Die Aspektkonstruktion mit Hilfe des Dekorierermusters vereinfacht die Subsystem-Bildung. Werkzeuge und die Aspektdekorierer können in ein Subsystem, während die Materialeine in ein anderes untergebracht werden.

KONTRA:

Implementation

Bearbeiten

Um den Dekorator zu verwenden braucht man:

  • Ein Interface von welchem sowohl die Substance als auch der Dekorator ableiten.
  • Einen Decorator welcher die Referenz zu exakt einem dieser Interfaces hält.
  • Implementierungen der Interfacemethoden im Decorator, welche die Funktionalität halten und anschließend an die Substance verweisen.
  • Eine Substance Klasse welche die basis Funktionalität beinhaltet.

Verwandte Muster

Bearbeiten

Der Decorator ist eine Aggregation, die nur eine Referenz hält.

Weblinks

Bearbeiten

Wikipedia: Dekorierer