Java Reference
In-Depth Information
4.5.4.2 Nachteile
Die folgenden Nachteile werden gesehen:
x Dekoriert ein Dekorierer eine Klasse mit sehr vielen Methoden, erweitert aber nur
sehr wenige davon, besteht der Dekorierer zum größten Teil nur aus Delegations-
methoden. Eine Delegation führt aber zu einer Verzögerung.
x Fehler in kombinierten Dekorierern sind oft sehr schwer zu finden.
x Man hat einen geerbten Anteil, den man gar nicht nutzt. Dieser Nachteil entfällt,
wenn an Stelle einer abstrakten Komponente eine Schnittstelle verwendet wird, die
auch der Dekorierer realisiert (siehe Lösungsvariante in Kapitel 4.5.3.1).
4.5.5 Einsatzgebiete
Die Möglichkeiten des Dekorierer-Musters sollen im Folgenden anhand von zwei Bei-
spielen gezeigt werden. Das eine Beispiel (siehe Kapitel 4.5.5.1) ist in den Stream-
Klassen von Java zu finden, beim anderen Beispiel (siehe Kapitel 4.5.5.2) handelt es
sich um die Erweiterung von grafischen Elementen. Dabei sollen Elemente von
grafischen Oberflächen, beispielsweise Textfelder oder Schaltflächen, über Dekorierer
mit grafischen Zusätzen wie etwa mit einem Rahmen erweitert werden können.
4.5.5.1
Anwendungsbeispiel 1: Streams
Das erste Beispiel zeigt, wie man den Stream-Klassen von Java eine Pufferung beim
Schreiben als Zusatzfunktionalität hinzufügen kann. Um dieses Beispiel übersichtlich
zu halten, werden nur die im Folgenden aufgeführten von der Klasse Output abgelei-
teten Klassen betrachtet. Für die Implementierung der Pufferung wird hier eine ein-
fache Lösung gewählt, die so nicht in der entsprechenden Klasse einer Java-Plattform
zu finden sein muss.
Die Klasse PipedOutputStream kann Daten in eine Pipe schreiben, während die
Klasse FileOutputStream Daten in eine Datei schreiben kann. Diese Klassen sind
im Folgenden in einer Vererbungshierarchie zusammen mit der abstrakten Klasse
OutputStream dargestellt:
OutputStream
{abstract}
PipedOutputStream
FileOutputStream
Bild 4-13 Vererbungshierarchie der OutputStream-Klassen
Möchte man nun das Klassensystem so erweitern, dass man in eine Pipe oder eine
Datei auch gepuffert schreiben kann, so gibt es zwei Möglichkeiten - eine schlechte
und eine gute. Die schlechte und aufwendige Lösung liegt auf der Hand. Man bildet
Search WWH ::




Custom Search