以前以为自己理解了Decorator,可是后来看了jive中的Decorator,就比较不清除了。jive中使用了Composite与Decorator的组合,这一点我不能理解。
ForumMessageFilter继承了ForumMessage,同时又封装了他的一个对象。这样作有什么好处呢?
Decorator与proxy模式结构非常相似。如果说Decorator是一个过滤器的话,是不是又太简单了?
其实看看java的io,你就会很清楚。动态增加功能,可以使你的余地很大。关于目的和解释,板桥的文章写的很清楚了
为什么一定要和Composite一起用啊,模式之间可以一起使用,但是要根据实际的情况,没有说什么模式一定要和什么模式一起用的说法,只是有些模式的关系比较密切,经常回一起用,但并不是一定的。
也许你说的仅仅是一个环境中的解决方法。
Composite:可以将decorator看做退化的,仅有一个组件的组合。然后装饰器的目的是给对象添加一些额外的职责,他的目的不在于对象聚集。
我没有看出来composite一定要和decorator一起用啊。如果一定要一起用的话,那还是变成另外的一个模式,因为他们的关系是那么紧密,不可分离,可以作为一个原子模式。
实现的好坏要看组合的威力。你仅仅单一了解一种模式,而不会组合起来使用的话,就太片面了!
看来是曲解了,我上面谈论的是不一定要一起使用,不是说一定要单独使用,看来老兄接触模式的时间好象不是太久啊。什么模式和什么模式结合一起用是要看情况的,不是为了模式而用模式。模式是前人的经验,我们使用模式不能按部就班,还是要按照实际的情况具体的分析。
“给类动态的添加一些额外的功能”这个我还是能理解的。大部分情况下,我要是用decorator也是向你说得一样那么做。只是后来看了jive,又回头看了看书,一种新的思路出来了。就我感觉,合在一起用会更清晰一些,我得个人感觉而已。
切磋一下,捣浆糊了
C一下!