您的位置:首页 > 运维架构

建造灵活与可维护的J2EETM 应用程序的设计模式

2008-05-24 03:43 316 查看
google_ad_client = "pub-8800625213955058";

/* 336x280, 创建于 07-11-21 */

google_ad_slot = "0989131976";

google_ad_width = 336;

google_ad_height = 280;

//

建造灵活与可维护的J2EETM 应用程序的设计模式

Vijay Ramachandran

2002 年1月

鉴于JavaTM2 企业版 (J2EETM) 已经成为服务器端应用程 序平台的首选,共享开发者的经验与设计就成了一件至关紧要的事。本 文介绍了一些可重复使用的设计模式,以便读者在建造灵活与容易维护 的J2EE应用程序时使用。

本文不对范例的正式摸板与UML图作介绍。您可以在 J2EE蓝图程序 找到这些细节与代码样例。本文所要解决的是那些能够影响J2EE应用程 序灵活性和可维护性的问题,并且给出推荐的解决方案。

什么是设计模式?

当您设计建造不同的应用程序时,您时而不时地会碰到相同或者非 常类似的问题域。每次碰到这些问题时您都必须去重新寻找解决方案 。为了节省时间与精力,如果有一个知识库,能够捕获这样的具有共 性的问题域与被证明是正确的解决方案,将是非常理想的。

用最简单的话来说,这样的通用解决方案就是一个设计模式。这样 的知识库,或者说参考处,包含了这些模式,就是设计模式目录。

式摸板进行描述,比如最流行的、由“四个伙计” Gang of Four定义的摸板。

模式摸板通常包含一个用来描述模式所代表的意义的名字,紧跟着 的是模式的适用范围、动机、在实现过程中的问题等等。除了描述问 题与阐明解决方案,模式还解释在使用本模式的实现过程中可能存在 的问题和后果。

使用这样的模式让应用程序的设计变得透明。这些模式已经被不同 的开发者在不同的领域内成功地使用过,所以,一个模式的优点和缺 点(也包括实现过程中的问题)都已经事先知道。所有的设计模式都 是可重复使用的,并且在特定的场合中适用。这就给了您灵活性。同 J2EE应用程序有关的设计模式的使用在J2EE平台技术方面提供了更多 优势来展示了解决方案。

建造灵活与可维护的J2EE应用程序的设计模式

多层的J2EE应用程序由位于中间层的一些可能是分布式的不同视图 和组件组成。在本文的以下章节中,给出了一些能帮助您让典型的J2EE 应用程序具备可扩展性、灵活性和可维护性的设计模式。本文不使用那 些抽象的文字,而使用了一个假想的实际例子,试图让您尽可能地理解 这些模式。一旦您了解了这个应用程序例子,您就能很容易地将这个例 子中使用的模式应用到其他应用程序中。

以一个Web上的金融服务企业级应用程序作为例子。浏览者可以在这 个站点上浏览服务项目列表、建造帐户、订购该金融服务机构提供的各 种产品等等。我们假定这个应用程序允许已有的客户改变各自的帐户细 节与个人资料,并使用这些服务,等等。典型地,这样的应用程序有多 个视图或者屏幕,用户可以通过鼠标点击,在这些视图间切换,查找服 务项目列表,存取个人资料,使用各种服务项目,或者取得其他信息。 事务逻辑代表着用户的帐户、资料、服务目录、服务定单等等,这种形 式就如同在企业版JavaBeans(EJB)中的分开的实体。把这个例子放在心 里,然后再看看那些重复的问题,您就能明白如何使用特定的模式来建 造灵活的、可维护的应用程序。

模型-视图-控制器

问题域

如果您所建造的这个企业级应用程序只是给单一类型的客户使用的, 那问题就简单了。我们可以简单地将数据存取/数据修改逻辑与不同的 客户视图逻辑混合在一起。但是随着一个完全互连的无线世界的出现, 客户端的设备从PDA、蜂窝电话到一个功能强大的桌面系统上的浏览器 都有,这还不包括其他的传统设备。在这种情况下,将数据存取与视 图混合在一起来作为解决方案,将会有很多问题,这是因为:

您必须开发这个应用程序的不同版本,以便适应与支持各种不同 的客户需要

由于视图的代码与数据存取/修改的代码纠缠在一起,重复的数 据存取/修改代码散步在各处,这就使得应用程序几乎是不可维护的。

开发生命周期被不必要地扩展了

建议的解决方案

为了找到这个问题的解决方案,请注意以下几点:

不论客户类型如何,被存取与显示的数据必须来自同一个企业级 的数据源。

所有的客户必须能够对数据源进行修改。

不论是修改一个客户类型,还是修改数据存取/修改逻辑,都不应 该影响到应用程序的其他组件。

您需要一个能让您开发出松散耦合的应用程序的解决方案。建议采用 模型-视图-控制器(MVC)结构。MVC已经被非常有效地应用在GUI类型的 应用程序的设计上。通过在J2EE应用程序上采用MVC结构,您可以将数据 存取逻辑与数据表现逻辑分别开来。您也可以建造一个灵活的并且是很 容易扩充的控制器来控制应用程序的整个流程。下图展示了MVC结构。

如下所述,MVC结构可以映射到多层的企业级J2EE应用程序:

所有的企业级数据与用于处理数据的事物逻辑都能用这个模型来 表示。

视图可以通过这个模型存取数据,然后决定如何将数据表达给客 户。当模型改变时,视图必须确认给用户所表达的内容也跟着改变。

控制器可以与视图交互,并且将客户的行为转换为模型可以理解 与执行的行为。控制器也根据最新的客户行为与相关的模型行为来决 定下一个要被显示的视图是什么。

将上述的逻辑应用到金融应用程序例子中,您将这样建造应用程序:

应用程序的事务逻辑由组成MVC结构中的模型的EJB来代表。模型 对来自控制器的要求作出反映,并存取/修改相应的数据。

应用程序界面的不同屏组成MVC结构中的视图。当模型改变时,视 图自动更新。

应用程序的控制器是一些对象的集合,这些对象接收用户的行为, 并且将其转换为模型可理解的请求,一旦模型完成了对请求的处理, 就决定下一个要显示在屏幕上的内容是什么。

想要在一个小例子中将MVC结构完全展示出来是非常困难的。 J2EE蓝图 程序 中的Java宠物商店演示程序是一个很好的基于MVC结构的完整的J2EE应用 程序的例子。

注意事项

MVC结构适合于高

MVC结构适合于高度交互的系统,这种系统需要可扩展性、可维护性与多用 户视图。

MVC 将表述、用户交互与系统模型解耦合。

由于不存在耦合,将多数据集表述在多视图中就变得很容易。同时也使得 为新的客户类型提供支持更为简单。

使用这种结构,代码冗余被最大限度地减少了。

通过将表述、模型、全面的应用程序流程这三者分开,这个结构使得不同 的开发者可以负责不同的模块,于是,产品上市的时间就快了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: