Java Reference
In-Depth Information
:Client
:Dekorierer
:Komponente
operation()
operation()
operation() : result
operation() : result
Bild 4-10 Sequenzdiagramm für die Dekoration einer Komponente
Wegen des liskovschen Substitutionsprinzips kann in Bild 4-10 auch eine konkrete
Komponente bzw. Subklasse an die Stelle einer Komponente treten. Genau das ist in
dem in Kapitel 4.5.3.5 folgenden Programmbeispiel der Fall.
4.5.3.4 Mehrere Dekorierer
Sollen die Komponenten um mehrere verschiedene Funktionalitäten erweitert werden,
können mehrere Dekorierer erstellt werden. Diese können durch die vorgeschlagene
Konstruktion sogar alle "gleichzeitig" angewendet werden, indem ein Dekorierer einen
anderen Dekorierer aggregiert.
In dieser Situation ist dann aber - besonders dann, wenn viele Methoden nur delegiert
werden müssen - ein abstrakter Dekorierer sinnvoll. Im abstrakten Dekorierer können
alle Methoden einfach nur delegiert werden. Konkrete Dekorierer leiten von dem ab-
strakten Dekorierer ab und müssen nur noch einige Methoden überschreiben, um die
gewünschte Funktionalität zu erbringen. Das folgende Klassendiagramm zeigt einen
abstrakten Dekorierer:
«use»
Komponente
Client
Konkrete
Komponente1
Konkrete
Komponente2
Abstrakter
Dekorierer
{abstract}
. . . .
Konkreter
Dekorierer1
Konkreter
Dekorierer2
. . . .
Bild 4-11 Klassendiagramm des Dekorierer-Musters mit mehreren konkreten Dekorierern
Search WWH ::




Custom Search