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