大家来说说decorate模式的精髓
我先说说,抛砖引玉。
我觉得这个模式的精髓和composite模式其实是一样的,
那就是把一系列的具有相似的类设计成具有统一接口。
对于decorate,用户可以用这个统一的接口来操作任何一个类。这样就可以用这些类相互修饰。产生复杂的对象。而用户接口不变。
对于composite,用户也是可以用这个统一的接口来操作,这里和decorate的区别是,decorate是用一个修饰另一个,以此类推,可以递归修饰。而composite则是可以一个包含多个,并且可以递归包含。
这两个模式的精髓都在于统一接口,这样就可以使用递归来实现复杂对象。
不知道理解的对不对,请高手指正。
[288 byte] By [
msdn] at [2007-8-14 13:07:56]

# 4 Re: 大家来说说decorate模式的精髓
这两个模式其实是形似而神非,因为它们是针对两个完全不的问题的解决方案。组合模式用于使用已有对象来组成一个复杂的对象,而修饰模式重用已有对象的行为并进行一些改变或扩展。组合模式关心的是数据的组织,而修饰模式关心的则是对行为的重用和改变。整饰模式所解决的问题与修略模式所解决的问题有些相似并且有交集,有些问题可以选择用修饰模式或是用策略模式,而组合模式对这些问题是无能为力的。
其实修饰模式和策略模式的思想关键就是:使用组合而不是继承来重用代码。它们所解决的问题通常会有通过继承解决的途径,只是随着对象规模的增长会变得很复杂,并且不够灵活。
# 5 Re: 大家来说说decorate模式的精髓
请问短歌:
问题是组合模式有个要求必须是具有相同接口的一系列类之间才能使用组合模式。
而对于已经存在的一系列类,如果没有相同接口似乎不能用这个模式阿。
用一系列已经存在的类来组合一个复杂对象好像有点像facade模式,我是说可以用facade模式达到这个效果。请指正。