J2EE核心模式 - Session Facade(Session外观)
2008-01-08 23:22Update
Session Facade模式又称Session外观模式,它建议在多层分布式的应用中,在逻辑业务处理层增加一种起着外观(facade)作用会话Bean,表示层组件通过该会话Bean与其它业务逻辑处理组件(SessionBean,EntityBean,DAO等)交互。
Session Facade模式介绍
我们从问题,解决方法,策略,优点等几个方面介绍Session Facade模式。最后给出Session Facade的相关联结。问题
在分布式的多层应用J2EE环境中,往往存在多个小粒度的业务逻辑处理组件(包括SessionBean,EntityBean,DAO等),为了完成某个业务处理,表示层组件(客户端)往往需要调用多个业务逻辑处理组件。表示层对业务逻辑处理组件的大量分散调用,将产生以下问题:
- 表示层与业务逻辑层之间的高度耦合性。表示层严重依赖业务逻辑组件。
- 当表示层组件与业务逻辑处理组件分别位于不同的网络环境中时,对业务逻辑处理组件的大量访问或调用将引起过多的网络访问,影响系统的执行效率。
- 缺乏统一的访问策略,导致业务逻辑处理组件的误用。
题外话:表示层与业务逻辑层之间的高度耦合性问题可以使用Business Delegate模式解消。
解决方法
Use a session bean as a facade to encapsulate the complexity of interactions between the business objects participating in a workflow. The Session Facade manages the business objects, and provides a uniform coarse-grained service access layer to clients.
使用Facade Session Bean,该Session Bean从更大粒度的业务角度来封装复杂的业务流程,为客户端提供一个更简单的访问界面。
Session Facade模式结构图:
Client
Client可以是一般的Java Object,或者是Business Delegate或其它的SessionBean等。
Session Façade
SessionFacade是一个SessionBean,它负责管理多个BusinessObject,为客户端提供更高级别的访问界面。Client通过SessionFacade完成业务逻辑处理。
Business Object
业务逻辑处理组件。
策略
Session Façade是业务逻辑处理层的控制器,它有以下实现策略:
Stateless Session Facade Strategy
使用无状态会话Bean实现Session Façade。
Stateful Session Facade Strategy
使用有状态会话Bean实现Session Façade。
优点:
使用Session Facade模式有以下好处:
- 担当业务层的控制器角色。
- 为客户端提供统一简单的接口界面
- 减少耦合性,提高可管理能力
- 减少网络调用,提供性能
- 安全管理,事务管理等的集中控制
- 暴露更少的接口给客户端
Session Facade例:
- Session Bean的实现方法请参考相关资料
- Façade形式的实现请参考文末的联结:Façade[GoF]
相关模式
Facade [GoF]
Facade设计模式是Session Facade的基础。
Data Access Object
Session Facade可以使用DAO代替EntityBean进行数据库操作。
Service Locator模式
Session Facade可以使用Service Locator模式来查找/访问业务逻辑组件。
Business Delegate
表示层组件可以通过Business Delegate访问Session Facade,完成业务处理。
Broker [POSA1]
Session Facade担当打破EntityBean组件与其它客户端之间的耦合性关系这样一种角色。
参考资料:
Core J2EE Pattern Catalog

Core J2EE Patterns - Session Facade
- Relative Articles
- J2EE核心模式 - Data Access Object(数据存取对象) - (2008-01-11 23:24)
- J2EE核心模式 - Business Delegate(业务代理) - (2008-01-07 21:11)
- J2EE核心模式 - Composite View(复合视图) - (2007-12-29 10:38)
- J2EE核心模式 - Dispatcher View(视图转发器) - (2007-12-26 22:06)
- J2EE核心模式 - Service to Worker - (2007-12-26 21:52)
- J2EE核心模式 - View Helper(视图协助器) - (2007-12-26 21:39)
- J2EE核心模式 - Front Controller(前端控制器) - (2007-12-21 21:46)
- J2EE核心模式 - Intercepting Filter(拦截过滤器) - (2007-12-21 21:17)
- 广告投放与管理系统的功能体系结构分析 - (2007-12-18 21:38)
- 图解EJB的体系结构 - (2007-12-03 21:29)
- MVC模式 - 写在理解J2EE模式的前篇 - (2007-11-24 23:52)
- J2EE核心模式 - 概要 - (2007-11-21 00:04)