文档介绍:J2EE设计模式
作者:未知文章来源:
访问次数: 次加入时间:2005-01-19
J2EE中的设计模式
--------------------------------------------------------------------------------
文章来源:(Don Young ) 阅读次数:(684) 更新时间:(2002-8-27 12:53:00)
什么是Design Patten?
简单来说,Design Patten 就是一个常用的方案。在我们的开发过程中,经常会遇到一些相同或者相近的问题,每次我们都会去寻找一个新的解决方法,为了节省时间提高效率,我们提供一些能够解决这些常见问题的,被证实可行的方案,构成一个统一的资源库。
一个Design Patten描述了一个被证实可行的方案。这些方案非常普通,是有完整定义的最常用的模式。这些模式可以被重用,有良好的伸缩性,而这些Design Patten的优势将在设计J2EE应用时得到体现。
Model-View-Controller
问题
如果开发一个企业级应用,只需要一种客户端的话,那么一切都非常容易解决。但真实情况是,我们必须面对运行在各种设备上客户端,象PDA,WAP浏览器以及运行在桌面上的浏览器,我们不得不开发不同的应用程序来处理来自不同客户端的请求。数据访问与现实将混淆在一起,可能会出现重复的数据访问,导致整个开发周期没有必要的延长。
建议的解决方法
Model-View-Controller (MVC) 开发模式被证明是有效的处理方法之一。它可以分离数据访问和数据表现。你可以开发一个有伸缩性的,便于扩展的控制器,来维护整个流程。如图1所示为整个模式的结构。MVC模式可以被映射到多层企业级的J2EE应用上。
§ 所有的企业数据以及商业逻辑可以作为模式。
§ 视图可以通过模式访问数据,并根据客户端的要求来显示数据。视图必须保证当模式改变的时候,数据显示也必须同时改变。
§ 控制器用来结合模式和视图,把客户端来的请求转换成模式能够理解并执行的请求,并且根据请求以及执行结果来决定下一次显示那一个视图。
根据以上的逻辑,你可以象这样建立一个应用:
§ 应用的商业逻辑由MVC中的模式也就是EJB来表现。模式必须处理由控制器传递过来的对数据的访问请求。
§ 多个页面组成了MVC中的视图,这些视图必须随模式一起更新。
§ 控制器是一系列接收用户动作的对象,他们把用户的请求转换成模式可理解的请求,并决定显示那一个页面当模式处理完请求后。
要点
§ MVC结构适用于那些多用户的,可扩展的,可维护的,具有很高交互性的系统。
§ MVC可以很好的表达用户的交互和系统模式。
§ 很方便的用多个视图来显示多套数据,是系统很方便的支持其他新的客户端类型。
§ 代码重复达到最低。
§ 由于分离了模式中的流控制和数据表现,可以分清开发者的责任,另外,也可以加快产品推向市场的时间。
2. Front Controller
问题
MVC给出了一个整个应用的松散的耦合架构。现在来看一下这样一个经常发生的情况。在某一个应用中,用户看到的视图和他所做的操作密切相关。这是一些具有高度交互性的页面,而这些页面之间含有高度的依赖性。在没有任何模式的时候,这个应用只是一个许多独立的页面的集合,维护和扩展变得异常困难。
§ 当一个页面移动后,其他含有这个页面链接的文件,都必须修改。
§ 当有一系列页面需要口令保护时,许多配置文件需要修改,或者页面需要包含新的标记。
§ 当一个页面需要一个新的表示层时,页面中的标记要被重新安排。
当这个系统变得复杂时,这些问题将变得更糟。如果用MVC来解决的话,就变成一个如何管理控制器和视图之间交互的问题。
建议的解决方法
前台控制模式可以解决这个问题。这个模式中,所有的请求都被传送到一个对象中。这个主要的对象将处理所有的请求,决定以后显示那一个视图,以及实现必要的安全需求。对于把视图显示以及其他功能实现集中到一个主要的对象中,将使修改变得很容易,对应用的修改,可以在所有视图中反映出来。
要点
§ 这个模式对于需要在多个含有动态数据的页面之间进行复杂导航的系统来说,是很有效的。
§ 这个模式对于要在所有页面中都包含模板,转换等的应用来说,也是很有效的。
§ 由于视图的选择集中在前端控制器上,因此,视图的导航变得更加容易理解和便于配置。
§ 视图重用和变更会更加容易。
§ 视图之间的复杂交互,使得控制器变得复杂。从而,当应用发展的时候,控制器将变得难以维护。不过,大部分情况下可以用XML映射来解决。
§ 实现应用要求的安全性检验变得很简单。
§ 这个模式不适合小型的,只显示静态内容