Core J2EE Patterns 笔记

Presentation Tier Patterns:

1. Interceptiing Filter。

一种AOP思想的体现。将requet/response的“通用”的pre-处理和post-处理放到一个filter servlet中来。这样就只需写一个filter,而不必将通用代码在各个servlet中都写一份。关于“通用”代码,例子有会话验证、编码转换等

2.Front Controler。

一种Facade思想。将所有的请求都交给一个或几个Servlet集中处理。这个Servlet可以把按请求的具体内容再将它分发给真正的处理者。这样的好处是可以只写一份公用代码,对所有request应用通用逻辑,还可以限制WEB系统的access point。 典型的例子有Spring的DispatcherServlet

3.Context Object

Controller 不去从与协议密切相关的容器中去拿东西(如request.getParameter()),而是从与协议无关的context中去拿。这样可以去掉应用对协议的依赖。 个人认为这个模式没多大意义,因为所有的WEB应用基本上都完全采用HTTP协议

4.Application Controller

将action管理和view管理集中化、模块化。

5.View Helper

将View与它的处理逻辑分开。它的处理逻辑包括 业务逻辑、控制逻辑、展现格式化逻辑等。典型的例子如 Controller,JSTL,自建标签 等

6.Composite View

在页面上,如果要使用复合视图时,要使布局和各页面的内容分离。如Tiles,Sitemesh

7.Service to Worker

在把控制权传给View之前处理好请求并执行业务逻辑

8.Dispatch View

如果业务逻辑很少,并且View自己可以处理请求并执行业务逻辑,则把控制权直接交给View

9.Business Delegate

在客户端/表现层 和 业务层之间再放一个Business Delegate,它代理业务层向客户端/表现层服务,并隐藏业务层的实现细节。主要好处有:

a.消除业务层和客户端/表现层之间的耦合

b.把网络、技术方面的exception(如naming、socket)翻译成可读的exception

c.Business Delegate可以做一些附加的动作,比如出错重试、验证、缓存、同步等,而且这些细节客户端/表现层都不需要知道

d.查找远端对象并与之交互的职责交给了Business Delegate,表现层/客户端不需要关心这些事情

10.Service Locator

使用一个接口,集中地、透明地定位远端的服务组件。

11.Session Facade

在业务层,向远端的Client只暴露一个集中的服务接口。这样可以向Client隐藏服务层的细节,并可以集中地进行事务管理和安全管理。我不太认可这种方式,因为客户要求的服务是非常多的,这会使得此Facade中也存在很多并且相关性不是很强的方法,不符强内聚的原则

12.Application Service

用一个Application整合几个Business Object,实现一个USE CASE。这样的话客户不能直接访问BO,业务层可以向客户隐藏实现,并且,BO之间耦合性也更弱,一个BO也可以设计得更加通用(即不限于某一个USE CASE),这样可以提高代码的可重用性。

Application Service可以用 Command + CommandFactory实现

13.Business Object

将较通用的业务逻辑与持久化逻辑、use case-specific逻辑分开,以实现较好的弱耦合性和代码可重用性

14.Composite Entity

EJB相关,不懂

15.Transfer Object

使用一个只有属性、没有方法的简单类,在客户层和远程服务层之间传输数据。这样可以减少网络消耗

16.Transfer Object Assembler

把服务器端各层传给客户端的对象组合在一起,打包成一个大对象传来去。这样可以集成服务端各组件向客户端暴露的接口,减少客户端与远端服务器的交互次数。既简化了客户端的逻辑,又减少了网络开销

17.Value List Handler

在服务器端搜索到大量数据后,返回一个Iterator,使得客户端只能以迭代的方式访问这些数据,而不能一次性得到所有数据。这样可以减轻网络负担

18.Data Access Object

用独立的模块将数据访问封装起来,抽象成供上层调用的访问接口。这样可以保证持久数据访问的透明性,并使上层保持一种面向对象的风格

19.Service Activator

用一个 Service Activator 接受异步的请求

20.Domain Store

不太懂,体会不到有多大妙处

21.Web Service Broker

不知道好在哪里

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.