Decorator¶
Der Decorator ist ein Strukturmuster (engl. structural patterns). Das Muster ist eine flexible Alternative zur Unterklassenbildung, um eine Klasse um zusätzliche Funktionalitäten zu erweitern.
Warnung
Das Decorator-Pattern hat nichts mit Python-Dekoratoren zu tun.
Beispiel¶
Im Python-Wiki findet ihr ein Beispiel für das DecoratorPattern. Es zeigt uns, wie Dekoratoren in die Pipeline eingebaut werden, um dynamisch viele Verhaltensweisen in ein Objekt einzufügen.
Vor- und Nachteile¶
Vorteile
Mehrere Dekorierer können hintereinandergeschaltet werden
Die Dekorierer können zur Laufzeit und sogar nach der Instanziierung ausgetauscht werden.
Die zu dekorierende Klasse ist nicht unbedingt festgelegt, wohl aber deren Schnittstelle.
Zudem können lange und unübersichtliche Vererbungshierarchien vermieden werden.
Nachteile
Da eine dekorierte Komponente nicht identisch mit der Komponente selbst ist, muss man beim Testen auf Objekt-Identität vorsichtig sein.
Bei der Verwendung von dekorierten Komponenten müssen die Nachrichten vom Dekorierer an das dekorierte Objekt weitergeleitet werden.