解构Core J2EE Pattern ——GoF Design Pattern的自然延伸
Core J2EE Patter是企业应用软件设计的神兵利器,已为广大J2EE开发者所使用。然而如此法宝也不是从天而降,GoF Design Pattern在他的诞生历程中可谓功不可没。以下的部分我将就GoF Design Pattern在Core J2EE Pattern中的应用和大家展开讨论,所给出的是未经过简化的类图,对于一些不同的理解和文字中的关键概念请参看参考文献中所列信息。
表示层模式
截取过滤链
过滤链的目的是对消息进行筛选,最终将可用的消息交给消息的接受者。它以GoF Design Pattern中的Chain Of Responsibility为基础,是Chain If Responsibility的特例。
图表 1 ChainOfResponsibilty
前端控制器
前端控制器的目的是向客户端提供一个处理请求的最初联系点,也就是说为客户端提供一个与服务器交互的门户。这时的前端控制器是Façade的特例。
图表 2 façade
视图助手
试图助手的目的可以理解为为视图添加额外的功能,比如数据消化、业务逻辑等。从这一目的出发,我们可以利用Decorator作为其骨架。
图表 3 Decrator
复合视图
复合视图的目的是将复杂的试图理解为若干松偶合部分的集合。很明显,这是Composite模式在特定目的下的应用。
图表 4Component表示下的复合视图模式
工作者服务
工作者服务描述了前端控制器、试图助手和分发者试图的结合,对外提供统一的接口。由此看来,工作者服务也是一个Façade模式。工作者服务是典型的复合模式,它所要包装的是前面提到的前端控制器、试图助手和分发者试图这三种模式。
图表 5工作者服务
分发者视图
很难说分发者试图是那种设计模式的应用或哪几种模式的复合,但是我们可以借助Poxy模式来实现一个分发者视图。其设计思想是基于MVC的设计,通过定义消息和消息的映射解偶View和Control。
图表6 分发者试图
参考文献
《利用J2EE模式构建网站》李志 2003 年 7 月
《spring的MVC和前端控制器》
《J2EE核心模式》Deepak Alur、John Crupi、Dan Malks
《设计模式——可复用面对对象软件的基础》Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides
本文地址:http://com.8s8s.com/it/it35078.htm