Java Reference
In-Depth Information
Bild 4-11 zeigt, dass mehrere konkrete Dekorierer ( KonkreterDekorierer1 , Kon-
kreterDekorierer2 ) eingesetzt werden können und dass ein abstrakter Dekorierer
generischen Code für alle ableitenden konkreten Dekorierer bereitstellen kann.
Dieses Schema eines abstrakten Dekorierers wird auch im anschließenden Pro-
grammbeispiel benutzt, da in diesem Beispiel mehrere konkrete Dekorierer vorkom-
men.
4.5.3.5 Programmbeispiel
Das folgende Bild zeigt das Klassendiagramm dieses Beispiels:
Client
«interface»
IAuto
«use»
Cabrio
Limousine
Ausstattung
{abstract}
Navigations-
system
Klimaanlage
Seitenairbag
Bild 4-12 Klassendiagramm des Programmbeispiels zum Dekorierer
Hier wird das Dekorierer-Muster verwendet, um die konkreten Komponenten der Klas-
se Limousine und Cabrio zu dekorieren, welche beide die Schnittstelle IAuto im-
plementieren. Wie bereits in Kapitel 4.5.3.1 erwähnt wurde, vermeidet diese Lösungs-
variante mit einer Schnittstelle die Probleme mit geerbten Anteilen.
Die Klassen Limousine und Cabrio können nun mit Ausstattungen vom Typ Kli-
maanlage , Navigationssystem und Seitenairbags dekoriert werden, welche
die konkreten Dekorierer darstellen und von der abstrakten Klasse Ausstattung er-
ben. Dadurch kann z. B. die Klasse Cabrio mit Ausstattungen vom Typ Klimaanla-
ge und Seitenairbags dekoriert werden, so dass es für diesen Fall keine eigene
Klasse (z. B. CabrioKlimaAirbags ) geben muss.
Die Methoden gibKosten() und zeigeDetails() dienen der letztendlichen Aus-
gabe in diesem Programmbeispiel. Sie zeigen auf, dass sich durch die Dekoration eine
Schachtelung der Methodenaufrufe ergibt, durch die beispielsweise ein Aufsummieren
der Kosten möglich ist.
 
Search WWH ::




Custom Search