andriun ha scritto:
class Whip
class Mocha
class Espresso
prodotto :Espresso Mocha Whip Soy
Hai messo il println nel getDescription di Soy? Deve essere il primo invocato, lo ripeto.
andriun ha scritto:
Forse adesso ho capito dove mi confondevo....
Può essere che la descrizione(che comunque dovrebbe estendersi sempre da sinistra verso destra), sia in effetti composta solo in fase di ritorno; ovvero una volta raggiunto l'ultimo anello della "catena" che in questo caso corrisponde alla classe Espresso?
1) Il getDescription di Soy viene invocato (è quello più esterno assegnato a beverage1 nel main).
poi
2) Il beverage in Soy è il Whip, quindi il getDescription di Whip viene invocato.
poi
3) Il beverage in Whip è il Mocha, quindi il getDescription di Mocha viene invocato.
poi
4) Il beverage in Mocha è il Espresso, quindi il getDescription di Espresso viene invocato. Siccome Espresso deduco non è un "decoratore", non incapsula altro e ritorna solo "Espresso".
Il Mocha riceve di ritorno "Espresso" e gli accoda " Mocha" = "Espresso Mocha" che viene restituito, ecc.....