Das Beispiel ist wie folgt aufgebaut. Die Klasse ROOT_CLASS steuert die
Zusammenarbeit der übrigen Klassen und implementiert eine Methode zur
Demonstration des beschriebenen Konzepts. Die Klasse DEKORIERER ist eine
abstrakte Klasse und stellt den eigentlichen Dekorierer dar, der eine andere
Komponente enthalten kann. Die Klasse KOMPONENTE stellt die Schnittstelle
aller visuellen Komponenten dar. Von ihr sind die konkreten Komponenten- und der
Dekoriererklassen abgeleitet. Die Klasse TEXT_KOMPONENTE ist ein Beispiel für
ein visuelle Komponente, die dekoriert werden soll. Sie implementiert alle von
der Komponenten-Schnittstelle zur Verfügung gestellten Operationen. Diese
Operationen beziehen sich natürlich nur auf den enthaltenen Text. Die Klassen
NORMAL_RAHMEN_DEKORIERER, DASH_RAHMEN_DEKORIERER, EINFACH_KODIER_DEKORIERER und
KOMPLEX_KODIER_DEKORIERER sind die konkreten Dekorierer und stammen direkt vom
abstrakten Dekorierer und indirekt auch von der abstrakten Komponente ab. Der
NORMAL_RAHMEN_DEKORIERER bildet einen durchgezogenen Rahmen um die enthaltene
Komponente. Der DASH_RAHMEN_DEKORIERER bildet einen gestrichelten Rahmen um die
enthaltene Komponente. Der EINFACH_KODIER_DEKORIERER und der
KOMPLEX_KODIER_DEKORIERER kodiert die Texte der enthaltenen Komponente, wenn es
sich bei der Komponente nicht um einen Rahmendekorierer handelt. Wenn ein Rahmen
kodiert wird, wird die Komponente einfach durch eine Rechteck überdeckt. Der
EINFACH_KODIER_DEKORIERER hat außerdem die Eigenschaft (nicht bei Kodierung von
Rahmen), daß er bei zweimaliger Anwendung( direkt hintereinander ) den zuerst
kodierten Text in den Orginaltext umwandelt.
|