Decorator Pattern
Das Decorator-Pattern fügt einem Objekt dynamisch Verantwortlichkeiten hinzu, ohne seine Klasse zu ändern, und schichtet Verhalten über eine Kette von Wrappern als Alternative zur vererbungsbasierten Erweiterung.
Zweck
Funktionalität zur Laufzeit dynamisch schichten und Objekte flexibler erweitern als durch Vererbung.
Mechanismus
Ein Dekorator implementiert dieselbe Schnittstelle wie das Ziel, hält eine Referenz darauf und fügt Verhalten vor/nach der Delegation der Aufrufe hinzu. Mehrere Dekoratoren bilden eine Wrapper-Kette. Javas InputStream-Familie und Pythons @decorator sind typische Beispiele.
Anwendungsfälle
- Funktionsschichtung
- Dekoration von I/O-Streams
- Querschnittsthemen