Java Reference
In-Depth Information
Der Dekorierer darf die von der Klasse
Komponente
geerbten
Daten nicht benutzen.
Vorsicht!
Die Aggregation zeigt erst einen Nutzen, wenn die Klasse
Kom-
ponente
mehrere Subklassen hat. Nur durch den Einsatz der
Aggregation können alle Subklassen "gleichzeitig" erweitert wer-
den.
Der Nutzen der Vererbung beim Dekorierer-Muster liegt darin, dass ein Dekorierer
automatisch die gleiche Schnittstelle wie die Klasse
Komponente
anbietet. Damit
kann bei Einhaltung der Verträge infolge des liskovschen Substitutionsprinzips ein
Client ein Objekt der Klasse
Dekorierer
wie ein Objekt der Klasse
Komponente
oder ein Objekt einer von der Klasse
Komponente
abgeleiteten Klasse behandeln.
Lösungsvariante mit einer Schnittstelle für die Klassenhierarchie
Steht an der Spitze der ursprünglichen Klassenhierarchie ein Interface statt einer Ba-
sisklasse, so kann das Dekorierer-Muster ebenfalls angewandt werden. In dieser Vari-
ante muss die Klasse
Dekorierer
das Interface
IKomponente
implementieren und
ein Objekt vom Typ dieses Interface aggregieren, wie es das folgende Bild zeigt:
«interface»
IKomponente
Konkrete
Komponente
Dekorierer
Bild 4-9 Dekorierer als Realisierung einer Schnittstelle
Auch in dieser Situation gilt bei Einhaltung der Verträge das liskovsche Substitutions-
prinzip. Somit kann ein Client einen Dekorierer und konkrete Komponenten gleich be-
handeln.
Die Variante mit einem Interface hat aber einen entscheidenden
Vorteil: Die Probleme mit den geerbten Anteilen existieren hier
nicht.
Search WWH ::
Custom Search