21个J2EE模式
问:
为什么需要模式?
答:
每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。
有了模式,你就能一次又一次的使用该解决方案而不必做重复(探索的)劳动。
-----------------------------------------------------------------------------------------------------------------
J2EE平台是分层系统,我们按职责将J2EE的层次模型化,共分了五个层次:
客户层、表示层、业务层、集成层和资源层。
因为客户层和资源层并不是J2EE平台直接关注的问题,所以后面介绍的21个J2EE应用模式全部属于上面五层中的中间三层:
表示层模式包含与Servlet和JSP技术相关的模式、(8个)
业务层模式包含与EJB技术有关的模式、(9个)
集成层模式包含与JMS和JDBC等数据源有关的模式。(4个)
一、表示层模式
二、业务层模式
1. Business Delegate
使用业务代理可以作为客户端的业务抽象,目的是封装服务访问的细节。
2. Service Locator
使用服务定位器封装服务查找逻辑以及与供应商、产品相关的实现细节。
3. Session Facade
用于封装业务层组件,仅向远程客户端提供粗粒度的服务接口。
4. Application Service
包含需要跨多个单一服务的业务逻辑。它的细致程度介于Service Facade和具体的Service对象之间。
5. Business Object
用于封装那些相对简单的自成一体的业务对象(command helper or JSP view)的服务;
对于那些需要组合更多细粒度服务的场合还是应该使用Session Facade进行封装。
6. Composite Entity
该模式用于处理复杂实体的情况,将多个业务对象组合成父子关系。父对象作为对外的唯一接口,子对象依赖父对象。
对于这种复杂的对象关系,可以使用延迟加载和保存优化策略(Store Optimization (Dirty Marker) Strategy)提高存取对象的效率。
7. Transfer Object
组装来自不同层对象(有些来自BO层,有些来自DAO层)中的数据,然后一次性传给客户端
8. Transfer Object Assembler
该模式将来自多个业务对象和服务中的TO对象进行装配,获得一个合成的TO对象传给客户端。
9. Value List Handler
该模式针对大批量的数据结果处理,提供顺序查找以及翻页功能等附加功能;
另外对该模式使用单独的session facade,因为返回的结果对于业务对象是无状态的。
表三:集成层模式
1. Data Access Object
DAO封装了访问各类数据源的实现细节。这些数据源包括:RDBMS,LDAP, OODB, XML repositories, flat files等。
2. Service Activator
使用JMS或MDB实现异步服务调用。
3. Domain Store
在不能或不愿使用Entiry Bean的情况下,采用将数据持久化逻辑从对象模型中抽离出来单独处理的办法实现对数据源的访问。
4. Web Service Broker
使用Web Service Broker暴露那些比Session Facade粒度更粗,但比整个Service粒度更细的一组服务。
来源:
http://developer.51cto.com/art/200601/16938.htm
Core J2EE Patterns 2nd Editioin.chm