Design Patterns by examples: il Decorator, Come aggiungere nuove responsabilità e comportamenti alle classi esistenti senza modificarle. Entriamo nel Jug Torino Lounge Bar per un'implementazione pratica!
Domenico Ventura
8. Le cose perbene: UML! TableOrder + totalCost() + print() + addCocktail() Has (1-n) Cocktail <<interface>> + cost() + description() Daiquiri Martini TequilaSunrise Caipirinha
9.
10.
11.
12. Ecco il primo tentativo Una vera esplosione di classi! Problemi derivanti? Cocktail <<interface>> + cost() + description() Daiquiri Martini TequilaSunrise Caipirinha DoubleMartini MartiniOtr AbsolutMartini AppetizerMartini DaiquiriOtr AbsolutDaiquiri AppetizerDaiquiri
13.
14. Di nuovo UML! TableOrder + totalCost() + print() + addCocktail() Has (1-n) Cocktail <<interface>> + cost() + description() BaseCocktail + isAbsolut() + setAbsolut(); + ... + cost() + description() Daiquiri Martini TequilaSunrise Caipirinha
22. E il metodo cost()? 3,7 0.8 1.2 Chiamata a cost() sul decorator esterno Chiamata a cost sull’oggetto decorato Chiamata a cost sull’oggetto decorato € 4.7 cost() OnTheRocks cost() Absolut Martini cost()