J2EE的MVC体系结构及其设计模式(二)

5、会话面

会话面(session facade)模式在合作的企业对象间调节操作,并将应用函数合成一个单一简单的界面;它减少了类之间合作的复杂性,并使得类的调用者在该类变化的时候无需改动,这种模式通常以一个会话bean实现,以用来隐藏底层ejb的复杂交互。

这种设计模式出现的背景在于EJB通常既包括程序数据,又包括程序逻辑,而这些代码都会通过一定的界面作用于客户层,在多层次的J2EE平台应用程序中,就会造成一定的困难。

具体来说,在J2EE平台上的多层次系统中,通常会存在以下的问题:

(1)层次之间联系过于紧密,客户层和后端的业务对象具有较强的依赖关系;

(2)在客户和服务器之间有多次方法调用,因而导致了Web性能方面的问题;

(3)缺乏一定的客户访问机制,使得一些后台对象被随便访问。

一个多层次的J2EE应用程序通常具有很多由EJB实现的服务器端对象,它们通常负责提供系统服务、数据信息等,也就是说作为业务对象,它们既包括相关的程序数据,也包括其程序逻辑;在J2EE应用系统中,负责程序逻辑的对象通常由会话bean实现,而表示持久性存储,并在多个用户间共享的对象则由实体bean来实现;当然,应用系统的用户需要访问企业对象来满足自己的需求,如果企业对象向用户提供接口,用户可以直接地与相关对象通信,但是这样一来,用户必须负责管理所调用的企业对象之间的关系,并且能够处理其间的业务流程;然而,如果用户和业务对象之间存在过于直接的交互,两者的联系就会过于紧密,同时也使得用户过于依赖企业对象的具体实现,并负责管理与交互过程有关的业务对象查找和创建,以及不同的对象间相互调用的关系,甚至一些时候用户还需要管理多次调用之间的事务管理环节。

在用户需求不断增加时,这也是应用系统经常发生的情况,用户与不同的企业对象之间的交互也会变得越来越复杂,而企业对象可能需要一定内部的更新才能满足前者的需要,但是这样的话用户又需要根据企业对象实现的变化而做出相应的改变,这种情况将为应用系统带来相当大的麻烦;在访问EJB应用系统时,用户需要与远程对象进行交互。如果用户直接与所有相关的业务对象交互的话,将带来很大的Web负担;因为对于每一个ejb的激活,都将产生一次远程的调用,而如果存在大量的系统用户,用户与对象间的交互就将为Web通信带来很大的压力,使系统性能受到很大破坏;如果用户可以直接访问后端的企业对象,但是系统中又缺少一个统一的用户访问机制,那么这些访问很有可能变得杂乱无章,引起系统性能的下降,甚至导致一些安全问题。

为了解决以上的问题,开发人员可以采用会话面的设计模式,即使用会话bean来实现一个面(facade)来包含一个工作流中所有相关对象的交互;这个会话面负责管理业务对象,并向用户提供一个统一的服务访问层,会话面可以面向底层对象的交互过程,并提供一个仅仅包含必须提供的接口的服务层,由此它将复杂的对象交互和用户之间隔离开来; 会话面也负责管理企业数据和企业对象之间的交互,并表达其中需要的企业逻辑,因此会话面也可以管理企业对象之间的作用关系;同时,根据工作流的需要,会话面也管理对象的创建、查找、修改和删除。

在一个复杂的应用系统中,会话面可以将其生命周期的管理下放到一个单独的帮助对象去,比如说,会话面可以将管理会话和实体bean生命周期的工作交给服务定位对象; 同时,在应用系统中,检查业务对象之间的作用关系也是非常重要的,一些关系可能是暂时的,即只使用于一定的交互过程,而另外一些关系则是永久的,暂时的关系适合建模于会话面中的工作流,永久的关系则需要具体情况具体分析。

时间: 2024-09-19 23:56:04

J2EE的MVC体系结构及其设计模式(二)的相关文章

J2EE的MVC体系结构及其设计模式

目前大多数企业采用J2EE技术的结构设计与解决方案.对于我们学习和研究J2EE体系结构来说,了解与掌握J2EE体系结构的设计方法及一些常用模式是必须的:模型-视图-控制(model-view-control,简称MVC)结构是目前最常见的J2EE应用所基于的体系结构,MVC主要适用于交互式的Web应用,尤其是存在大量页面及多次客户访问及数据显示:相比较而言,一个工作流体系结构更多应用于过程控制和较少交互的情况下:除了体系结构外,J2EE的设计模式对我们解决应用系统的设计也有很大的帮助. 一.J2

J2EE的MVC体系结构及其设计模式(三)

7.值对象或传输对象 值对象(value object)模式通过减少分布式通信的消息而促进数据的交换,通常这里所指的通信是在Web层和EJB层之间.在一个远程调用中,一个单一值对象可以被用来取出一系列相关数据并提供给客户. 这种设计模式的出现是基于客户需要与ejb大量地交换数据的情况.具体来说,在J2EE平台中,应用系统通常将服务器端的程序组件实现为会话bean和实体bean,而这些组件的部分方法则需要将数据返回给客户:这种情况下,通常一个用户会重复调用相关方法多次,直到它得到相关信息,应该注意

AngularJS教程之MVC体系结构详解_AngularJS

模型 - 视图 - 控制器或MVC,MVC是普遍的叫法,是一种软件设计模式,用于开发Web应用程序.模型- 视图 - 控制器模式是由以下三部分组成: 模型/Model - 一个负责维护数据模式的最低水平. 视图/View - 负责显示所有或数据到用户的部分. 控制器/Controller - 软件代码控制Model和View之间的相互作用. MVC是受欢迎的,因为它隔离了应用逻辑从用户界面层和支持的关注点分离.这里的控制器接收用于该应用程序的所有请求,制备视图所需要的任何数据.视图,使用制备的控

简析J2EE应用程序数据库类设计模式

本文主要介绍一种数据库相关类的设计模式.并介绍在J2EE框架中的具体实现,以及在事务处理方面的一些考虑. 一.设计模式简介 在开发J2EE应用程序时,通常是要找出应用程序中涉及到的各种信息,比如一个公司的产品目录,或一个网站的用户信息,我们会将这些信息放在数据库里. 在通常的设计中,我们要分析这些数据的属性和关系,然后进行数据库的逻辑设计,把各种信息用不同的表来存储.比如,要开发一个图书信息查询系统.可以创建下面两个表来分别表示书和出版社. table Book (ID, Name, ISBN,

前端MVC学习总结(二)——AngularJS验证、过滤器、指令

一.验证 angularJS中提供了许多的验证指令,可以轻松的实现验证,只需要在表单元素上添加相应的ng属性,常见的如下所示: <input Type="text" ng-model="" [name=""] [required=""] [ng-required=""] [ng-minlength=""] [ng-maxlength=""][ng-pattern

ASP.NET MVC 权限管理(二) 实体模型设计

上一篇文章写了关于项目的基本开发组织和项目用到的一些东西,这篇文章就开始设计实体模型了,好了,废话不多说. 一.实体模型基类 因为每个模型实体都需要有一个编号,状态这些基本的东西,为了遵守MVC的"不要重复自己"的原则,共有的东西就写到一个公共类去,以前开发我都是用自增的Int作为主键,这一次呢就打算试用一下GUID作为数据库的主键编号,要是有不懂的地方,大家赶紧指出来啊~~ 有码有真相: /// <summary> /// 模型基类 /// </summary>

设计模式(二):自己动手使用“观察者模式”实现通知机制

在之前发布Objective-C系列博客的时候,其中提到过OC的通知机制,请参考<Objective-C中的老板是这样发通知的(Notification)>这篇博客.在之前关于Notification的博客中,只介绍了Foundation框架中的通知的使用方式.正如前面博客中提到的那样,通知是"一对多的关系",类似于广播.一个人发通知,多个人接收.这也就是设计模式中的"观察者模式".接收者的一方是Observer(观察者),而发送方是Subject(主题

交互设计模式(二)-Pagination(分页,标记页数)

上期回顾:交互设计模式(一)-前言 [版权声明]:版权归作者Alite所有,转载时请以超链接形式标明文章原始出处和作者信息及本声明:http://www.alitedesign.com 模式库 在模式库里,我将列出所有电子商务网站需要的模式.以下将罗列出经典常用的模式案例,我也试图让这些模式看起来更有趣味性与实用性.(Yahoo模式库也有对Pattern的一种定义.) 模式归属类别 为了方便调用和维护模式库中的各种模式,首先将模式库中的模式分成三大类:用户需求,应用需求,语境下的设计.在用户需求

杂谈: MVC/MVP/MVVM (二)

MVP MVC的缺点在于并没有区分业务逻辑和业务展示, 这对单元测试很不友好. MVP针对以上缺点做了优化, 它将业务逻辑和业务展示也做了一层隔离, 对应的就变成了MVCP. M和V功能不变, 原来的C现在只负责布局, 而所有的逻辑全都转移到了P层. 对应关系如图所示:   业务场景没有变化, 依然是展示三种数据, 只是三个MVC替换成了三个MVP(图中我只画了Blog模块), UserVC负责配置三个MVP(新建各自的VP, 通过VP建立C, C会负责建立VP之间的绑定关系), 并在合适的时机