Decorator fügt einer Komponente dynamisch neue Funktionalität hinzu, ohne die Komponente selbst zu ändern.

siehe: GitHub - ReadMe, GOF, PK

Klassendiagramm

Beispiel

Im Beispiel wird eine zufällig erscheinende Seriennummer (z.B. für Gutscheine) benötigt. Doppelte müssen vermieden werden. Eine Tabelle mit allen bereits vergebenen Zahlen kommt nicht in Frage.

Zur Verfügung steht nur eine einfache Sequenz. Ein ShufflingSequenceDecorator wird quasi darüber gestülpt und stellt eine geeignet verwürfelte Zahl bereit.

Für die bijektive Abbildung nutzt der Decorator intern die Kugel der Verwirrung (OrbOfConfusion).

Um das Zusammenspiel im Detail beobachten zu können, setzen Sie den log-level auf DEBUG oder TRACE in der logback.xml und führen den zugehörigen TestCase aus.

Ressourcen