两种设计模式在EJB开发中的应用 - 编程入门网
用程序业务对象往往比较复杂,在这种情况下,根据客户端请求不同,有可能单个业务对象会产生多个不同的值对象。在这种情况下,可以考虑采用多值对象策略。这种策略的实现比较简单,就是在entity bean中增加不同的Get×××ValueObject()方法和set×××ValueObject()方法。
2.Session Facade 模式 有了实体Bean,客户端就可以直接调用它以获得数据。也就是说实体Bean封装了业务数据,并把他们的接口暴露给客户,因而也就把分布式服务的复杂性暴露给客户。在对J2EE 应用程序环境下,一般会产生如下问题: 1、紧密耦合,这回导致客户端和业务对象的直接依赖关系 2、客户端和服务器之间的网络方法调用太多,容易导致网络性能问题 3、缺乏统一的客户访问策略,容易误用业务对象 4、如果实体bean的API改动,那么用户端的一些代码也要修改,扩展性很差 解决这些问题的方法就是把客户端和实体bean分割开。本文采用Session Facade模式,如图3-2所示。该模式通过一个Session Bean,为一系列的实体bean提供统一的接口来实现流程。事实上,客户端只是使用这个接口来触发流程。这样,所有关于实体bean实现流程所需要的改变,都和客户端无关。当实体bean改变时,我们不用改变客户端的代码,只要对Session Bean做出相应的改变即可,大大提高了系统的可维护性。 通过实体bean来表示业务对象是session fa?ade的最常见用法。但多个实体bean参与某用例时,不必向客户暴露所有实体bean。相反的,用session bean 包装这些实体bean ,并且提供粗粒度方法来执行所需的业务功能,从而隐藏了实体bean交互的复杂性。 但是千万不要以为Fa?ade模式就是简单的用Session Bean把Entity Bean的所有方法统统封装起来,而不提供任何额外的抽象。其实这是对Fa?ade模式的滥用。这样做并不是降低整个系统的复杂性,而是把复杂性转移到另一个对象上。 正确应用Facade模式应遵循三条基本原则: 1、他们自己不作实际工作,而是委派其他对象作实际工作。 2、他们提供简单的接口。 3、他们是底层系统的客户端接口。他们应该把特定于子系统的信息封装起来,并且不应该在不必要的情况下公开它。 两种设计模式在EJB开发中的应用(3)时间:2010-12-06三、具体代码 下面用一个简单的银行系统的例子来解释Fa?ade模式和Value Object模式的具体应用。 创建Entity Bean。其中对每个属性的get和set方法是自动生成的,我们不去管它。
其中
用值对象封装Entity Bean数据。
用Factory或者是Action类逻辑方法,涉及到数据的地方使用值对象。
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |