装饰者的装饰过程

13-01-28 9527
周末学习了装饰者模式,但仍然有疑问:

装饰者模式又叫包裹模式,Decorator1对象包裹Decorator2对象,Decorator2对象包裹Decorator3对象,最后Decorator3对象又包裹了ConcreteComponent对象.每一层包裹都提供了一些新的功能,如下图:


这不是很奇怪吗?

Decorator1和Decorator2和Decorator3根本没有任何联系,为什么先要把扩展的功能一层层传递呢?

而且不是:

ConcreteComponent包裹Decorator1

ConcreteComponent包裹Decorator2

ConcreteComponent包裹Decorator3

举个经典例子:咖啡,糖,牛奶,冰

糖,牛奶,冰都可以直接的,单独的添加到咖啡里,

为什么要先要把糖添加到牛奶里

然后再把糖牛奶添加到冰里

最后才把糖牛奶冰添加到咖啡里呢?

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

    

猜你喜欢