MVC在Web系统中的模式及其应用_第1页
MVC在Web系统中的模式及其应用_第2页
MVC在Web系统中的模式及其应用_第3页
MVC在Web系统中的模式及其应用_第4页
MVC在Web系统中的模式及其应用_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MVC在WWeb系统中的模模式与应用用面向对象的的设计模式式是经验的的总结,MVC思想是原原先用于构构建用户界界面的。这这篇文章主主要论述了了如何在新新的Web应用领域域中使用设设计模式和和MVC架构。文文章首先介介绍了设计计模式的概概念和特点点,以及MVC架构的设设计思想,并并分析了MVC架构中包包含的几种种主要的模模式。然后后根据Web应用系统统的特点,就就如何应用用模式和MVC架构提出出了一些设设计思路。 1. 引言1.11 设计模式面向对对象技术的的出现和应应用大大提提高了软件件的重用性性和软件的的质量。面面向对象的的编程也比比以往的各各种编程模模式要简单单和高效,但但是面向对对象的设

2、计计方法要比比以往的设设计方法要要复杂和有有技巧得多多,一个良良好的设计计应该既具具有对问题题的针对性性,也充分分考虑到对对将来问题题和需求有有足够的通通用性。在在过去的十十几年中,人人们在对面面向对象技技术的研究究探索和实实际应用中中针对某些些问题创造造了一些良良好的解决决方案,即所谓的的面向对象象的设计模模式。面向向对象技术术的目的之之一就是提提高软件的的重用性,而而对设计模模式、设计计方案的重重用则从更更深的层次次上体现了了重用的意意义和本质质。人们对对设计模式有很多定定义,其中中被引用的的最多是Chriistoppher Alexxandeer的设计模模式的定义义:每一个个设计模式式是

3、一个三三方的规则则,它表达达了一个上上下文环境境(Conttext),一个问题题和一个解解决方案。设计模式式一般有如如下几个基基本要素:模式名称称,问题,目目的,解决决方案,效效果,样例例代码和相相关设计模模式。设计计模式的分分类有好几几种,可以以根据其目目的分为创创建型(Creeatioonal),结构型(Strructuural)和行为型(Behhaviooral)三种。创创建型模式式主要是用用来创建对对象,结构构型模式主主要是处理理类或对象象的组合,行行为型模式式则主要用来描述对对类或对象象怎样交互互和怎样分分配职责。也可以根根据范围将将设计模式式分为类模模式和对象象模式,类类模式处理理

4、类和子类类之间的关关系,这些些关系通过过继承建立立,在编译译时刻就被被确定下来来,是属于于静态的。对象模式式是处理对对象间的关关系,这些些关系在运运行时刻变变化,更具具动态性。 模式的特特点:是通通过经验获获取的,以以某种结构构化的格式式书写下来来,避免了了遇到相同同的问题重重头设计,存存在于不同同的抽象层层,在不断断完善的,是是可重用的的人工产物物,使设计计和最好的的练习交互互,以被组组合起来解解决更大的的问题。 1.2 MMVC架构MVC最初是在Smallltallk-800中被用来来构建用户界面的的。M代表模型Modeel, V代表视图 Vieew, C代表 控制器Conttrollle

5、r。MVC的目的是是增加代码码的重用率率,减少数数据表达,数数据描述和和应用操作作的耦合度度。 同时也使使得软件可可维护性,可可修复性,可可扩展性,灵灵活性以及及封装性大大大提高。单用户的的应用通常常是以事件件驱动的用用户界面为为组织结构构的。开发发人员用一一个界面工工具画了一一个用户接接口界面,然然后编写代代码根据用用户输入去去执行相应应的动作,许许多交互式式的开发环环境鼓励这这么做,因因为它强调调先有界面面然后再有有功能。一一些软件设设计模式策策略是这样样的,然后后经常将固固定后的代代码融入最最后的系统当中。导致的结结果就是,程程序组织围围绕用户界界面元素和和用户在那那些界面元元素上的动动

6、作,数据据的存储,应应用的功能能以及用来来显示的代代码都杂乱乱无章的缠缠绕在一起起。在单用用户的系统统里代码结结构是可以以这样的,因因为系统需需求不会频频繁变化。但是对一一个大的系系统如大型型Web系统,或或电子商务务系统来说说就不太适适用了。通通过把数据据模式从各各种可以被被存取和控控制的数据据中分离出出来可以改改善分布式式系统的设设计。MVC设计模式式由三部分分组成。模模型是应用用对象,没没有用户界界面。视图图表示它在在屏幕上的的显示,代代表流向用用户的数据据。控制器器定义用户户界面对用用户输入的的响应方式式,负责把把用户的动作转成针针对Modeel的操作。Modell 通过更新View的

7、数据来来反映数据据的变化。三者关系系如图: 对MVC关系图的的理解图2 MVC的分工与协协作2. MVC中的设计计模式一个个以MVC为架构的的系统包含含了很多的的设计模式式,但是与与MVC最为密切切相关的是是下面三种种模式:Obseerverr, Comppositte和Straategyy。2.1 Obseerverr模式MVC通过使用用定购/通知的方方式分离了了Modeel和View。View要保证自自己显示能能正确地反反映出Modeel的内容和和状态。一一旦Modeel的内容发发生变化,必必须有一个个机制来使使得Modeel能够通知知相关的View,使得相相关的View可以在适适当的时机

8、机刷新数据据。这个设设计还可以以解决更一般的问问题,将对对象分离,使使得一个对对象的改变变能够影响响到另一些些对象,而而这个对象象并不知道道那些被影影响的对象象的细节。这就是被被描述为Obseerverr的设计模模式。 模式类型型:Obseerverr模式是对对象型模式式,同时它它也是行为为型模式。模式目的的:定义对对象间的一一对多的依依赖关系,当当一个对象象的值或状状态发生改改变时,所所有与它有有依赖关系系的对象都都得到通知知并自动更更新。某一一数据可能能有多种显显示方式,并并且可能同同时以不同同的方式显显示(如图图2)。当通通过某一种种方式改变变了数据,那那么其他的的显示都应应该能立即即知

9、道数据据的改变和和做相应的的调整。模模式结构:图 3. Obseerverr模式的结结构图效果果:1. 抽象耦合合。目标对对象只知道道它有一些些观察者,每每个观察者者都符合抽抽象的Obseerverr类的简单单接口,并并不知道它它们具体属属于哪个类类。这样使使得目标和和观察者之之间的耦合合最小且抽抽象。2. 支持广广播通信。目标发送送通知不用用指定观察察者,如何何处理通知知由观察者者决定。33. 可能的意外更新。要处理好好更新逻辑辑,避免错错误更新。2.2 CCompoositee模式MVC的一个重重要特征就就是View可以嵌套套。嵌套的的组合视图图可用于任任何视图可可用的地方方,而且可可以管

10、理嵌嵌套视图。这种思想想反映出将将组合的视视图与其组组件平等对对待的设计计。这种设设计思想在在面向对象象领域内被被描述成为为Comppositte的设计模模式。模式式类型:Comppositte模式是对对象型模式式,同时它它也是结构构型模式。模式目的的:将对象象组合成树树形结构以以表示部分-整体层次结构构。Comppositte使组合对对象的使用用和单个对对象的使用用具有一致致性。模式式结构:图4. Comppositte模式的结结构图效果果:1. 定义了包包含简单对对象和组合合对象的类类层次结构构。简单对对象可以被被组合到复复杂对象中中,而组合合的对象可可以再被组组合。这样样客户端代代码中用

11、到到简单对象象的地方都都可以使用用组合对象象。2. 简化客户户端代码。客户端不不用知道某某对象是简简单对象还还是组合对对象,可以以以一致的的方式使用用这些对象象。3. 更容易增增加新类型型的组件。新的组件件可以方便便地加入已已有组合对对象中不用用改变客户户端代码。2.3 SStrattegy模式MVC的另一重重要特征是是可以在不不改变View的情况下下改变View对用户输输入的响应应方式。这这对一个经经常需要变变更响应逻逻辑的系统统来说是非非常重要的的。MVC把响应逻逻辑封装在在Conttrolller中。有一一个Conttrolller的类层次次结构,可可以方便地地对原有Conttrolll

12、er做适当改改变,创建建新的Conttrolller。View使用Conttrolller子类的实实例来实现现一个特定定的响应策策略。要实实现不同的的响应策略略,只要用用不同种类类的Conttrolller实例例替换即可可。还可以以在运行时时刻通过改改变View的Conttrolller来改变View对用户输输入的响应应策略。这这种Vieww-Conntrolller的关系是是被描述为为Straategyy的设计模模式的一个个例子。模模式类型:Straategyy模式是对对象型模式式,同时它它也是行为为型模式。模式目的的:定义一一系列的算算法,并且且把它们封封装起来,使使它们可以以互相替换换,

13、使得算算法可以独独立于使用用它的客户户端而变化化。 模式结构构:图5. SStrattegy模式的结结构图效果:1. Strrateggy类层次为Conttext定义了可可重用的相相关算法或或行为。22. 替代代继承的方方法。如果果直接继承承Conttext,给以不不同的行为为,会将行行为加到Conttext中,从而而将算法的的实现与Conttext混合起来来,使Conttext难以理解解,维护和和扩展,而而且不能动动态地改变变算法。将将算法封装装在独立的的Straategyy类,可以以使得算法法独立于Conttext改变,容易易切换扩展展。3. 可以提供供相同行为为的不同实实现。4. 客户端

14、必必须了解Straategyy之间有何何不同。55. Coontexxt和Straategyy之间的通信信开销。66. 增加加了对象的的数目。3. MVVC在 Web系统中的的应用现在在的一些基基于Web的分布式式系统如B2B电子商务务系统,就就适合采用用MVC架构。通过过分析,从从高层次的的角度可以以将一个应应用的对象象分为三类类。一类就就是负责显显示的对象象,一类对对象包含商商业规则和和数据,还还有一类就就是接收请请求,控制制商业对象象去完成请请求。这些些应用的显显示是经常常需要变换换的,如网网页的风格格,色调,还还有需要显显示的内容容,内容的的显示方式式等。而商商业规则和和数据是相相对要

15、稳定定的。因此此,表示显显示的对象象View经常需要要变化的,表表示商业规规则和数据据的对象Modeel要相对稳定定,而表示示控制的Conttrolller则最稳定定。通常当当系统发布布后,View对象是由由美工,HTMLL/JSPP设计人员员或者系统统管理员来来负责管理理的。Conttrolller对象由应应用开发人人员开发实实施,商业业规则对象象和商业数数据对象则则由开发人人员,领域域专家和数数据库管理理员共同完完成的。显显示逻辑在在Web层或客户户端控制,可可以是Servvlet 或JSP,动态地地生成Html。一般来来说采用JSP要比采用Servvlet要好。JSP更好地将将代码与Ht

16、ml部分分开开,有利于于页面设计计人员和代代码开发人人员的分离离,提高效效率。同时时JSP可以完成成所有Servvlet完成的功功能,实际际上JSP最终也转转换成一个个Servvlet。与控制制有关的对对象存在于于系统的每每一个层次次,协调跨跨层动作。包含商业业规则和数数据的对象象存在于EJB层(以EJB为中心的的模式)或或Web层(以Web为中心的的模式)。3.1 VView在Web系统中的的应用Viiew代表系统统的显示,它它完全存在在于Web层。一般般由JSP, Javva Beean和Custtom Tag组成。JSP可以动态态生成网页页内容,Custoom Taag 更方便了了使用J

17、avaa Bean,而且它它可以封装装显示逻辑辑,更有利利于于模块块化和重用用。一些设设计良好的的Custoom Taag可以在多多个JSP甚至可以以在不同的的系统里重重复使用。Javaa Bean用来控制JSP和Modeel对象。JSP通过Javaa Beaan 来读取Modeel对象中的的数据,Modeel和Conttrolller对象则负负责对Javaa Bean的数据更更新。一般般来说,可可以先要设设计出所有有可能出现现的屏幕,即即用户使用用系统时可可以看到的的所有内容容。然后根根据这些内内容,找出出公共部分分,静态部部分和动态态变化部分分。可以考考虑使用模模板方法,把把公用的内内容单

18、独生生成JSP,需要变变化的也各各自生成Html或JSP, 由一个模模板JSP, 把这些不不同部分动动态地引入入(incllude方法)。还有一个个要考虑的的问题就是是屏幕的选选择问题,当当处理完用用户请求,模模板被自动动调用来显显示,这个个显示一定定要知道用用户关心的的屏幕是有有哪些部分分组成。所所以可以考考虑把所有有屏幕的定定义放在一一个集中的的文件里,如如一个java文件或文文本文件。由于考虑虑到屏幕定定义文件将将来的变更更可能性,最最好使用文文本文件如如一个XML文件,这这样将来更更改不用重重新编译。可以根据据用户输入入的URL和参数可可以映射到到某一个结结果屏幕,当当然有可能能还要根

19、据据动作的执执行结果选选择不同的的结果屏幕幕内容。所所以需要一一个请求与与资源的匹匹配文件(XML),如果果一个URL请求有几种种不同结果果,则要在在该文件中中指明是否否需要流控控制(一种种conttrolller对象)以以及不同流流向的对应应屏幕。33.2 MModell在Web系统中的的应用Moodel对象代表表了商业规规则和商业业数据,存存在于EJB层和Web层。在J2EE的规范中中,系统有有些数据需需要存储于于数据库中中,如用户户的账号信信息(accoount modeel),公司司的数据(commpanyy moddel)等,也有有一些不需需要记录在在数据库里里的,如某某用户浏览览的

20、当前产产品目录(cattalogg modeel),他的购购物内容(shooppinng caart modeel)等。这些model数据存在在于哪一层层要根据它它们的生命命周期和范范围来决定定。在Web层有HttppSesssion和ServvletCConteext及Javaa Bean对象来存存储数据,在EJB层则有EJB来存储数据和逻辑。Web层的Java Bean的model对象存储了EJB层model对象的数据的拷贝。因为EJB层有很多不同的model对象,所以Web层可以通过一个ModelManager来控制EJB层的各model对象,在ModelManger中可以封装使用后台m

21、odel对象的方法。在EJB层把所有的数据和规则都模式化为EJB也是不恰当的。如可以把存取数据库的对象模式化为DAO对象。DAO中可以封装与具体数据库的交互细节,如可以读写不同的表,多个数据库,甚至多种数据库。如定单的model对象可以是一个OrderDAO, 它可能要同时处理Order表,OrderStatus表和OrderItemLines表。还有可以考虑使用Value对象。一个Value 对象可以封装远程对象,因为每一个读远程对象的属性都可能是一个远程过程调用,都会耗费网络资源。可以在EJB的远程对象中使用Value对象. 在远程对象中一次性得到Value对象来得到所有属性的值。3.3 CContrrolleer在Web系统中的的应用Coontroollerr对象协调Modeel与View,把

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论