Quindi i decoratori avvolgono una classe base in modo ricorsivo, giusto? E avere un singolo oggetto super-classe che si trova nella classe "core".
Non potresti semplicemente aggiungere una ArryList / LinkedList di decorazioni nella classe "core" e ottenere la stessa cosa? Ciò eviterebbe la ricorsione (che è costosa), ma consente il comportamento dinamico di poter "decorare" le tue classi.
È un modello diverso o una versione alternativa di decoratori o qualcos'altro?
Esempio:
Decorator
Beverage class
getDescription(){blah}
cost();
HouseBlend inherits from Beverage
cost(){2.99}
CondimentDecorator inherits from Beverage
Beverage bev;
cost(){.19 + bev.cost}
getDescription{blah}
VS
Altro?
Beverage class
getDescription(){blah}
cost();
HouseBlend inherits from Beverage
List<Beverage> condiments
cost(){2.99 + iterative condiments}
CondimentDecorator inherits from Beverage
cost(){blah}
getDescription{blah}
Sembra che il decoratore potrebbe essere un po 'più flessibile, ma l'altra versione ti permetterebbe di tenere traccia delle istanze specifiche degli oggetti. Inoltre, se tu avessi espresso potresti avere un doppio scatto, dove con un decoratore puro sarebbe difficile.