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