bg_image
header

Decorator Pattern

Das Decorator-Muster ist ein Entwurfsmuster in der Softwareentwicklung, das zur Erweiterung der Funktionalität von Objekten verwendet wird, ohne ihre Klassen zu ändern. Es gehört zur Kategorie der strukturellen Muster und ermöglicht es, Verhalten dynamisch zu einem Objekt hinzuzufügen.

Das Hauptziel des Decorator-Musters besteht darin, die Funktionalität eines Objekts durch Hinzufügen von zusätzlichen Verantwortlichkeiten oder Eigenschaften zu erweitern, ohne die Kernlogik des Objekts zu ändern. Dadurch wird das Muster flexibler und wiederverwendbarer als eine statische Subklassenhierarchie.

Das Muster verwendet eine Kompositionsstruktur, bei der die Dekoratoren die gleiche Schnittstelle wie das ursprüngliche Objekt implementieren. Jeder Dekorator enthält eine Referenz auf das zu dekorierende Objekt und kann zusätzliche Funktionalitäten hinzufügen, indem es die Methoden des ursprünglichen Objekts aufruft und gegebenenfalls seine eigenen Operationen ausführt.

Vorteile des Decorator-Musters:

  1. Flexibilität: Da Dekoratoren die gleiche Schnittstelle wie das ursprüngliche Objekt implementieren, können sie beliebig kombiniert werden, um verschiedene Funktionalitätskombinationen zu erstellen.

  2. Keine Klassenexplosion: Im Gegensatz zu statischen Subklassenhierarchien, bei denen für jede Kombination von Funktionalitäten separate Klassen erstellt werden müssten, ermöglicht das Decorator-Muster eine dynamische Erweiterung ohne Klassenexplosion.

  3. Offene Erweiterung, geschlossene Modifikation: Die Funktionalität kann zur Laufzeit hinzugefügt werden, ohne den bestehenden Code zu ändern, was das offene/closed-Prinzip unterstützt.

Ein bekanntes Beispiel für das Decorator-Muster ist die Erweiterung von Streams in der Java Standardbibliothek. Verschiedene Dekoratoren wie "BufferedInputStream," "DataInputStream," "GzipInputStream," usw., können verwendet werden, um zusätzliche Funktionen, wie Pufferung oder Datenverarbeitung, zu einem Basisklasse-Stream hinzuzufügen, ohne die Basisklasse selbst zu ändern.

 


Erstellt vor 2 Jahre
Backend Design Patterns Frontend Objektorientierten Programmierung Prinzipien Programmierung Software Webentwicklung

Hinterlasse einen Kommentar Antworten Abbrechen
* Erforderliches Feld