Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
38 lines (33 sloc) 1.41 KB
interface Component
method operation()
class ConcreteComponent implements Component
method operation()
// ...
class ComponentDecorator implements Component
// Es muss ein Feld mit dem ursprünglichen Objekt vorhanden sein,
// welcher anschließend modifiziert, oder auch um zusätzliche
// Funktionalität erweitert wird
field component : Component
// der Dekorierer nimmt ein beliebiges Objekt vom gleichen typen zum
// modifizieren entgegen
constructor(component : Component)
this.component = component
// Jede Methode kann durch weitere Funktionen erweitert werden.
// Dabei spielt es keine Rolle, ob dies vor oder nach der eigentlichen
// Logik geschieht. Sollte eine bestimmte Methode nicht erweitert werden
// kann die zusätzliche Funktionalität auch ausgelassen werden.
// Wichtig ist nur, dass diese Überhaupt aufgerufen wird.
// Da die definierten Dekorateure "von unten nach oben" aufgerufen werden
// spielt es auch eine Rolle, ob die Erweiterung vor oder nach der
// eigentlichen Logik hinzugefügt wird
method operation()
// ...
this.component.operation()
// ...
program Client
component = new ConcreteComponent()
// ACHTUNG: Der eigentliche Typ ändert sich nach dieser Zuweisung
component = new ComponentDecorator(component)
// es wird zunächst die Logik aus "ComponentDecorator" ausgeführt
// und anschließend die eigentliche Logik aus "ConcreteComponent"
component.operation()
You can’t perform that action at this time.