大家的探讨
让我获益不浅。

想这样的讨论应该在论坛里多多的出现

不妥不妥, session中忌讳放大对象. 图片可是很占地方的啊!

我怎么觉得不是Decorator模式,更像责任链模式

>Decorator模式,更像责任链模式
这两个模式区别在于:是否是一个事件场景,责任链模式适合在一个事件激发的场景,所以需要必要的行为(所以它属于行为模式),责任链模式是对事件请求进行依次处理。

而Decorator模式没有这样严格要求,是宽泛的,属于结构静态的,适用范围更宽。Decorator模式和Proxy模式(还有动态代理模式)类似。

这两种模式带来的两个现实技术的选用区别:Servlet Filter和AOP或组件过滤器。这些技术都有细微区别。

本案例说明:其实很多时候,我们编码时就能够确定结构,因此使用Decorator模式几率比Filter或AOP机会大。

正因为大家越来越多明白AOP的拦截器功能和使用定位,引以为豪的Spring在其2.0版本中才将AOP重点放在与拦截器同等的另外选择Mixing这个上面,这个功能突破了Java语言限制,所以有可能会放入Jdk 6.0中。

准确地说是advice的Introduction上,Spring 2.0对Domain Model非贫血模型的改造上可见一斑,它把DAO通过AOP的Introduction引入了Model对象了。不知是福是祸。又要争论了。

谢谢板桥大哥!

感觉例子举的不好,把image放到httpsession中就如同对一个有lob的表用select * from 一样。

我觉得重点不是session中放大对象的问题,而是不应该和session耦合在一起!

>我觉得重点不是session中放大对象的问题,而是不应该和session耦合在一起!

这个已经通过Jdon框架实现,通过public void setSessionContext(SessionContext sessionContext) 方法放入SessionContext。
这样应用就不和Session耦合在一起,而且Jdon框架中是否使用HttpSession因为Ioc模式变得可以被替换。

解惑!!!!!!

banq大哥,Decorator模式应该是在完成任务至于额外添加了些任务,可是在这篇文章中感觉没有看明白怎么使用到了Decorator模式,还有这里的图片与宿主怎么具体的解耦呢,能否讲得详细点,谢谢!


ImageFilter imageDbFilter = new ImageProductDbFilter();
ImageFilter imageCacheFilter = new ImageCacheFilter(imageDbFilter);
imageFilter = new ImageSessionFilter(imageCacheFilter);

2010年05月31日 00:09 "spawnyy"的内容
还有这里的图片与宿主怎么具体的解耦呢,能否讲得详细点 ...

这里实际可以使用依赖注入实现解耦,Decorator模式应用很普遍,现在已经被整入一些面向函数语言之中。

banq大哥,是这样的我唯一不太理解的就是在HttpSession与数据库中间添加了一个Cache,其中这个Cache有什么作用,都负责什么工作。如果不引入Cache的话,用Decorator模式,那么HttpSession与数据库进行取出数据后然后在根据是否有宿主进行维护与宿主之间的关系呢