系统设计与建模


J2EE核心模式 - Session Facade(Session外观)

2008-01-08 23:22Update
TAGS: Core | J2EE | Pattern

LifevV.COM编辑部

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
 
Copyright ©2006-2010 lifevv.com. All Rights Reserved
POWERED BY @pmplat.syboos.com