Java Reference
In-Depth Information
nente darstellt, könnte sie nun durch die Dekoriererklasse mit einem Rahmen verziert
werden.
4.5.6 Ähnliche Entwurfsmuster
Vom Aufbau her ist das Entwurfsmuster Kompositum sehr ähnlich zu dem De-
korierer-Muster. Wenn man die beiden Klassendiagramme in Bild 4-7 und in Bild 4-11
vergleicht, so sieht man als einzigen Unterschied die Multiplizitätsangabe bei der Ag-
gregation. Die Kardinalität ist beim Dekorierer-Muster eins, beim Kompositum-Muster
aber beliebig. Betrachtet man alleine das Klassendiagramm, so kann ein Dekorierer
als Spezialfall des Kompositum-Musters mit nur einer einzigen Komponente ange-
sehen werden. Es zeigen sich jedoch erhebliche Unterschiede in der Verwendung des
Musters. Während mit Hilfe des Dekorierer-Musters Funktionalität dynamisch gebildet
werden kann, dient das Kompositum-Muster dazu, Objekte zu einer hierarchischen
Struktur zusammenzusetzen.
Ein Proxy kann ebenso wie ein Dekorierer ein Objekt um eine zusätzliche Funktiona-
lität erweitern. Sowohl ein Proxy-Objekt als auch ein Dekorierer-Objekt befinden sich
zwischen einer Anwendung und dem eigentlichen Objekt. In beiden Fällen halten sie
eine Referenz auf das eigentliche Objekt und können über diese Referenz Anfragen
und Befehle an das eigentliche Objekt delegieren. Vor oder nach bzw. vor und nach
einer Delegation kann eine Zusatzfunktionalität eingefügt werden. Beim Proxy-Muster
ist das aber eher ein Nebeneffekt, der sich aus der Konstruktion ergibt. Beim Proxy-
Muster steht eine andere Aufgabe - eine Art "Türsteher"-Funktion - im Vordergrund:
ein Proxy-Objekt ermöglicht oder verhindert den Zugriff auf die Funktionalität des
eigentlichen Objekts. Beim Proxy-Muster geht man in der Regel davon aus, dass das
eigentliche Objekt schon die richtige Funktionalität besitzt, beim Dekorierer-Muster soll
die Funktionalität des eigentlichen Objekts dynamisch durch ein Dekorierer-Objekt
erweitert werden.
Das Entwurfsmuster Strategie kann das Verhalten eines sogenannten Kontextobjekts
durch ein anderes Verhalten austauschen. Ein Kontextobjekt ist das Objekt, das die
konkrete Strategie aufruft. Die Gesamtfunktionalität eines Kontextobjektes ändert sich
durch den Austausch der Strategie nicht, weil alle Strategien die gleiche Funktionalität
realisieren. Beim Dekorierer-Muster hingegen wird die Funktionalität eines Objektes
geändert bzw. erweitert. Während alle Strategien die gleiche Funktionalität realisieren,
kann hingegen jeder Dekorierer etwas anderes machen. Ein Dekorierer behält das
Verhalten des zu dekorierenden Objekts bei und versieht dieses Objekt mit einer Zu-
satzfunktionalität. Beim Strategiemuster hingegen wird von der Umgebung dieses
Musters zielgerichtet das Kontextobjekt mit einer anderen Strategie versehen (kom-
pletter Austausch eines Algorithmus). Damit wird keine Zusatzfunktionalität erzeugt,
sondern es findet ein Austausch eines gesamten Algorithmus für das Kontextobjekt
statt.
Ebenso wie ein Besucher realisiert ein Dekorierer eine neue Funktionalität. Das Be-
sucher-Muster erlaubt es, in einer Datenstruktur eine neue zentrale Funktion hinzuzu-
fügen. Mit dem Dekorierer-Muster können jedoch nur einzelne Objekte erweitert wer-
den. Ein weiterer Unterschied ist, dass beim Besucher-Muster die zu besuchenden
Objekte auf den Besuch "vorbereitet" sein müssen, dadurch dass sie eine entspre-
chende Methode dem Besucher zur Verfügung stellen.
Search WWH ::




Custom Search