Decorator模式、BUG和AOP

04-03-31 banq
模式是实践的总结,没有模式的实践就如没有马列主义指导的农民运动一样朴素,但没有方向,模式带来分析和设计思路的转变。

http://www.jdon.com/artichect/patternsInPractice.htm

         

prixtchxpc
2004-03-31 21:37
很好的文章,谢谢banq

ajoo
2004-04-01 08:35
不是很确定是否看懂了问题。不过乍看上去,这个解决方案并不理想。

把HttpSession这个servlet api的东西和比较独立的图片上传耦合起来,怎么能够达到最大的重用性呢?

毕竟,图片上船和http session并没有直接关系,不管是http session,还是db,都不过是你实现图片上船的一个具体方法而已。

从问题的描述来看,很明显的,第一印象应该是试图抽象这个ImagePersistence接口。

让图片模块只和这个抽象的ImagePersistence交互。ImageUpload只管上船,ImagePersistence负责储存,各干各的。

然后,针对http session, cookie, db, file, memory+session, memory+file blah blah blah, 各自实现自己的ImagePersistence实现。

banq
2004-04-01 09:31
多谢ajoo有兴趣看这篇文章。

HttpSession只是一个暂存处,可能有其它暂存处或持久处,注意暂存处和持久处是有区别的,区别在于,前者电源一关就没了。

关键在于,要搭一个架子,让你提到的那些blash blash暂存处或持久处能够动态加入。

“ImageUpload只管上船,ImagePersistence负责储存,各干各的”

这些只是我这个架子的客户端,ImageUpload和ImagePersistence性质还不一样,ImageUpload可能要调用ImagePersistence,除了ImageUpload,还会有 ImageShow(也可能调用ImagePersistence)等,这就会发生我图2所示的情况。

ajoo
2004-04-01 09:39
你分析的不错。那么就叫ImageTemp也好。

其实,不是说电源一关就一定没有,而是说:这个ImageTemp不保证电源一关还有。:)

我对你这个解法的唯一意见在于,把HttpSession和Image不必要地耦合了。

假如,以后想抛开session,直接存在内存中(我内存无限大,你管不着),或者存在一个定时清除的硬盘上的临时目录中,你难道还要改框架?

在我看来,理想情况是:你要能找一个根本不知道什么是servlet的人,就告诉他:这是我对image upload, query, show的要求,这是我的ImageTmp的接口。

然后他就能够给你作出这个Image库来。

毕竟,这个库本质上并不依赖于servlet。

猜你喜欢
7Go 1 2 3 4 ... 7 下一页