J2EE核心模式提到了21个模式。如果采用Struts、Spring、Hibernate或EJB 3.0的容器,其中的一些模式已经由框架提供。
本文小鸡射手将其再分类如下:
了解:表示该模式已经由相关框架实现,或者由相关框架提供的功能替代;
不建议:表示不建议使用该模式;
一般:表示一般应用可能不使用该模式;
重要:表示大多数应用均需要使用该模式。
模式名
|
分类
|
说明
|
表现层
| ||
Intercepting Filter
|
一般
|
建议总是使用标准过滤器策略。
|
Front Controller
|
了解
|
Struts的ActionServlet已经实现了该模式。
|
Context Object
|
了解
|
Struts的ActionForm和DynaActionForm类已经实现该模式。
|
Application Controller
|
了解
|
Struts的RequestProcessor类已经实现了该模式。
|
View Helper
|
重要
|
建议总是采用基于模版的策略,不使用基于控制器的策略。建议采用JavaBean或标签文件策略,不使用定制标签策略。
|
Compositive View
|
重要
|
建议采用第三方标签的策略,如Tile;简单情况也可以使用<jsp:include>。
|
Service to Wroker
|
了解
|
指的就是Front Controller、Applicaton Controller 和ViewHelper的综合。
|
Dispatch View
|
不建议
|
仅在不需要或者很少业务逻辑的情况下使用。
|
业务层
| ||
Business Delegate
|
了解
|
采用Spring Ioc容器的依赖注入可以替代该模式。
|
Service Locator
|
了解
|
采用Spring 2.0的<jee:jndi-lookup>可以替代该模式。
|
Session Façade
|
重要
|
建议在轻量级框架中定义业务接口并采用POJO实现,在EJB 3.0容器中采用Stateless Session Bean实现。
|
Application Service
|
一般
|
一般的建议在Session Façade中实现业务逻辑。但是如果除了Stateless Session Bean还需要提供对应的Web Service接口,可以提供Application Service层实现业务逻辑;而Session Façade和Web Service仅提供接口。
|
Business Object
|
最重要
|
建议在轻量级框架中使用Hibernate实现,在EJB 3.0容器中使用Entity实体实现。不建议使用Entity Bean。
|
Composite Entity
|
不建议
|
不建议使用Entity Bean。
|
Transfer Object
|
不建议
|
不建议使用远程接口,层间也就不需要Transfer Object。如果需要群集,建议采用并排结构代替分布式结构。
|
Transfer Object Assembler
|
不建议
|
不建议使用Entity Bean及远程接口。
|
Value List Handler
|
不建议
|
建议采用Hibernate或JPA的query实现。
|
集成层
| ||
Data Access Object
|
重要
|
建议在轻量级框架中定义数据访问接口并采用POJO通过Hibernate native API或JPA实现,在EJB 3.0容器中采用Stateless Session Bean通过JPA实现。采用Spring Ioc的依赖注入,因此不需要DAO工厂策略。
|
Service Activator
|
一般
|
建议采用Spring 2.0的<jee:jndi-lookup>来依赖注入ConnectionFactory和Destination,并使用JMS 1.1统一的API处理Publish-Subscribe和Point-to-Point模式;也可以考虑采用Spring的JmsTempleate类。Message Driven Bean建议采用EJB 3.0的规范实现。
|
Domain Store
|
了解
|
Hibernate native API或JPA已经实现该模式。
|
Web Service Broker
|
了解
|
EJB 3.0规范中可以将Stateless Session Bean实现为Web Service。也可以采用Servlet实现Web Service(如XFire)。
|
小鸡射手认为最重要的Business Object,请参考
类图和ORM关系一文。