装饰者的装饰过程

周末学习了装饰者模式,但仍然有疑问:
装饰者模式又叫包裹模式,Decorator1对象包裹Decorator2对象,Decorator2对象包裹Decorator3对象,最后Decorator3对象又包裹了ConcreteComponent对象.每一层包裹都提供了一些新的功能,如下图:


这不是很奇怪吗?
Decorator1和Decorator2和Decorator3根本没有任何联系,为什么先要把扩展的功能一层层传递呢?
而且不是:
ConcreteComponent包裹Decorator1
ConcreteComponent包裹Decorator2
ConcreteComponent包裹Decorator3

举个经典例子:咖啡,糖,牛奶,冰
糖,牛奶,冰都可以直接的,单独的添加到咖啡里,
为什么要先要把糖添加到牛奶里
然后再把糖牛奶添加到冰里
最后才把糖牛奶冰添加到咖啡里呢?


[该贴被admin于2013-01-28 14:23修改过]