![MVC在Web系统中的模式与应用_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/53e8961a-2038-4836-bf6e-5136928a9bc2/53e8961a-2038-4836-bf6e-5136928a9bc21.gif)
![MVC在Web系统中的模式与应用_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/53e8961a-2038-4836-bf6e-5136928a9bc2/53e8961a-2038-4836-bf6e-5136928a9bc22.gif)
![MVC在Web系统中的模式与应用_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/53e8961a-2038-4836-bf6e-5136928a9bc2/53e8961a-2038-4836-bf6e-5136928a9bc23.gif)
![MVC在Web系统中的模式与应用_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/53e8961a-2038-4836-bf6e-5136928a9bc2/53e8961a-2038-4836-bf6e-5136928a9bc24.gif)
![MVC在Web系统中的模式与应用_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/8/53e8961a-2038-4836-bf6e-5136928a9bc2/53e8961a-2038-4836-bf6e-5136928a9bc25.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MVC在Web系统中的模式与应用-摘要面向对盘的设il蟆式是经验的总结,MVC思想是原先用于构建用户界面的。这篇文草主要论述r如何在新 的web应用领域中使用设计模式和MVC架构。文苹首先介绍了设计模式的概念和特点,以及MVC架构 的设讣思想,并分析f MVC架构中包含的几种主要的模式。然后根据W e b应用系统的特点,就如何应用 模式和MVC架构提出了一些设计思路。1. 引言1.1设计模式4而向对象技术的出现和应用大大提商了软件的重用性和软件的质址。面向对象的編程也比以往的备种编 程模式要简单和岛效,但是而向对彖的设讣方法要比以往的设计方法要复杂和有技巧得多,一个良好的设计 应该既具有对问題
2、的针对性.也充分考虑到对将來问题和需求有足够的通用性°在过去的十几年中,人们在 对而向对象技术的研究探索和实际应用中针对某些问題创适了一些良好的解决方案,即所谓的面向对飲的 设汁模式。而向对象技术的目的之一就是提岛软件的重用性.而对设讣模式、设计方案的重用则从见深的 层次上体现了重用的总:义和木质。人们对设il模式有很藝定义.其中被引用的昴多是Chr i stopher A 1 exander的设计模式的定义:每一 个设讣模式是一个三方的规则沱表达了一个上下文环境(Context)z-个问题和一个解决方案。设计模式 一般有如下几个基木要素:模式名称.问题,目的,解决方案.效果,样例代
3、码和相关设讣模式。设计模式的分类有好几种,可以根据其目的分为创建(Creational),结构型(Structural )和行为 型(Beha vioral)三种。创建型模式主要是用來创建对彖,结构型模式主要是处理类或对線的组合,行为型 模式则主要用來描述对类或对象怎样交互和怎样分配职责。也可以根据范鬧将设计模式分为类模式和对歛 模式,类模式处理类和子类之间的关系这些关系通过继承建立.在编译时刻就被确定下來,是属于静态的。 对毀模式是处理对象间的关系,这些关系在运行时刻变化,更具动态性。模式的特点:是通过经验获取的.以某种结构化的格式书写下來.避免了遇到相同的问题重头设讣存在 于不同的抽毀层,
4、在不断完善的.是可重用的人工产物,使设计和最好的练习交互.以被组合起來解决更 大的问題。12 MVC架构人MVC最初是在Small t al k-80中被用来构建用户界面的。M代表模 型Model , V代表视图View, C代表控制器Con tro Iler。MVC的目的是増加代码的重用 率,减少数据表达,数据描述和应用操作的耦合度。同时也使得软件可维护性,可修复性,可扩展性.灵活性 以及封装性大大提商。亠单用户的应用通常是以事件驱动的用户界面为组织结构的。开发人员用一个界面 匚具画了一个用户接口界然后编写代码根据用户输入去执行相应的动作.许多交互式的开发环境鼓励 这么做大I为它强调先有界而
5、然后再有功能。一些软件设计模式策略是这样的,然后经常将固定后的代码融 入最后的系统、”1中。导致的结果就是程序组织隔绕用户界面元素和用户在那些界面元素上的动作.数据 的存储,应用的功能以及用來显示的代码都朵乱无草的缠绕在一起。在单用户的系统里代码结构是可以这 样的因为系统需求不会频繁变化。但是对一个大的系统如大型Web系统,或电子商务系统來说就不太适 用了。通过把数据模式从各种可以被存取和控制的数据中分离出來可以改善分布式系统的设计。MVC设讣模式由 三部分组成。模型是应用对念,没有用户界面。视图表示它在屏幕上的显示,代表流向用户的数振n控制器 定义用户界而对用户输入的响应方式,负责把用户的动
6、作转成针对Model的操作。Model通过更新View 的数据來反映数据的变化。三者关系如图:图1 AWC关系图-对MVC关系图的理解模型M视图V控制器C分工 抽象系统应用的功能 封装系统的状态 捉供便用浆统功能的方法和路径 背理数据的存储和一致性 当数据发生变牝时通知相关部分 抽象数据表达 表示针对用尸的数据 维护与Model数据的一致性 抽象用戶和系统的事 件的语意映射 把用户输入翻译为泵 统爭件 根据用户的输入和上 下文焙况选择合适的 显示数据协作 当他改变泵規数据时邇知z 能邂被Vi艸检索数据 提供对Controller的操作途径 把Model W征给用戶 当数据被相关Model改 变
7、时更新表示的数据 把用尸输入提交给 Controller 把用戶谕入转成对Model的系统行为 根据用户输入和Noiel的动作结果选择合适的叭ew图2 MVC的分工与协作2. MVC中的设计模式及一个以MVC为架构的系统包含了很乡的设汁模式.但是与MVC最为密切相 关的是下面三种模式:Observer, Composi t e和Strategy。鼻2 .1 0 b server模式MVC通过使用定购/通知的方式分离f Model和View。View要保证自己显示能正确地反映出M o del 的内容和状态。一旦Model的内容发生变化,必须有一个机制來使得Mod cl能够通知相关的View.使
8、得相关的View可以在适、*1的时机刷新数据。这个设讣还可以解决更一般的问題,将对象分离,使得一个对 象的改变能够影响到另一些对彖.而这个对St并不知道那些被影响的对毀的细节。这就是被描述为Obsc rve r的设计模式。模式类型:0 bscrver模式是对彖型模式同时它也是行为型模式。鼻模式目的:定义对飲间的一对笋 的依赖关系一个对铁的值或状态发生改变时,所有与它有依赖关系的对線都得到通知并自动更新。某一数据可能有多种显示方式,并且可能同时以不同的方式显示(如图2) o十通过某一种方式改变了数据,那么 其他的显示都应该能立即知道数据的改变和做相应的调整C模式结构:a » 图 3 O
9、b s e r ver模式的结构图效果:“抽象耦合。目标对彖只知道它有一些观察者,每个观察者都符合抽線的Observer类的简爪接 口,并不知道它们具体属于哪个类。这样使得目标和观察者之间的辎合最小且抽奴。2支持广播通信。目标发送通知不用抬定观察者,如何处理通知由观察者决定。3.可能的意外更新。要处理好更新逻辑避免错误更新。2人2 Composite模式MVC的一个重要特征就是Vie w可以嵌套。嵌套的组合视图可用于任何视图可用的地方,而且可以管理嵌套 视图。这种思想反映出将组合的视图与其组件平等对待的设汁。这种设计思想在面向对象领域内被描述成 为Composite的设计模式。鼻模式类型:Co
10、mpo s it c模式是对象型模式,同时它也是结构型模式。 模式目的:将对奴组合成树形结构以表示-部分整体"层次结构。Com p osite使组合对象的使用和収个 对毀的使用具有一致性。模式结构:Operation: for all g in children g.OperationQ图4. Composite模式的结构图效果:1定义了包含简单对彖和组合对躱的类层次结构。简収对線可以被组合到复杂对&中.而组合的对彖可 以再被组合。这样客户端代码中用到简玳对象的地方都可以使用组合对象。2.简化客户端代码。客户端不用知道某对彖是简讥对还是组合对直,可以以一致的方式使用这些对彖。
11、 鼻3更容易增加新类型的组件。新的组件可以方便地加入已有组合对欽中不用改变客户端代码。2人3 Strategy 式MVC的另一重要特征是可以在不改变View的情况下改变View对用户输入的响应方 式。这对一个经常需要变更响应逻辑的系统來说是非常重婆的。MVC把响应逻辑封装在Cont r 0 1 1 e r中。有一个Con t roller的类层次结构,可以方便地对原有Contro Iler做适十改变,创建新的Con trollen View使用Contro 1 ler f类的实例來实现一个特定的响应策略。要实现不同的响应策略.只要 用不同种类的Controlle r实例替换即可。还可以在运行时
12、刻通过改变View的Controller來改变V i e w对用户输入的响应策略。这种Vi e w-Co n t r ol 1 c r的关系是被描述为Strateg y的设汁模式的一个 例子。人模式类型:Strategy模式是对念型模式,同时它也是行为型模式。 模式目的:定义一系列的算 法,并且把它们封装起來,使它们可以互相替换.使得算法可以独立于使用它的客户端而变化。模式结构:ContextStrategyContextlnterfecef)AlgorithmlnterfaceQ图5. Strategy模式的结构图亠效果::US t rategy类层次为Con t ext定义了可重用的相关算
13、法 或行为。2鼻替代继承的方法。如果直接继承Context.给以不同的行为,会将行为加到Co n texW 从而将算法的实现与Contex t混合起來,使Context难以理解,维护和扩展,而且不能动态地改变算法。 将算法封装在独立的S t rategy类,可以使得算法独立于C ontext改变,容易切换扩展。可以提供 相同行为的不同实现。4客户端必须了解St rate g y之间有何不同。5 . Contex t Strat e gy之间的通信开销。3 .增加了对象的数目。3. MVC在Web系统中的应用现在的一些基于Web的分布式系统如B2B电子商务系统,就适合采用MVC架构。通过分析,从
14、商层次的角度可以将一个应用的对象分为三类。一类就是负责显示的对一欽,一类对歛包含商业 规则和数据.还有一类就是接收请求,控制商业对象去完成请求。这些应用的显示是经常需要变换的.如 网贞的风格,色调,还有需耍显示的内容.内容的显示方式等。而商业规则和数据是相对婆稳定的。因此, 表示显示的对彖View经常需要变化的.表示商业规则和数据的对毀Mo del要相对稳定.而表示控制的 Control) er则最稳定。鼻通常、勺系统发布后.View对欽是由茨工.HTMLVJSP设汁人员或者系统管理 员來负责管理的。Con t rol 1 er对彖由应用开发人员开发实施,商业规则对象和商业数据对辣则由开发人
15、员/领域专家和数据库管理员共同完成的。显示逻辂在we b层或客户端控制何以是Serv let或JSP,动 态地生成Html。一般來说采用JSP婆比采用Serv let耍好。JSP更好地将代码与Htm 1部分分开, 有利于贞面设讣人员和代码开发人员的分离,提商效率。同时JSP可以完成所有Servlc t完成的功能, 实际上JSP最终也转换成一个Sc r v 1 e t o与控制有关的对象存在于系统的每一个层次协调跨层动 作。包含商业规则和数据的对象存在于EJ B层(以EJB为中心的模式)或Web层(以Web为中心的模 式)。3.1 View在Web系统中的应用view代表系统的显示.它完全存在于
16、Web层。一般 由JSP Java Bea n和Custom Tag组成。JSP可以动态生成网页内容,Cus t om Tag QI 方便(使用Java Bean,而且它可以封装显示逻辑,更有利于于模块化和重用。一些设汁良好的Cu st o m Tag可以在筝个JSP甚至可以在不同的系统里重复使用。Java Bea n用來控制J SP和Model对象。 J SP通过Java Bea n 來读取Model对象中的数据,Model和C ontrol 1 e r对象则负责对Ja va B ea n的数据更新。一般來说,可以先嬰设讣出所有可能出现的屏幕即用户使用系统时可以看到的所有内容。 然后根据这些
17、内容,找出公共部分,静态部分和动态变化部分。可以考虑使用模板方法,把公用的内容单独生 成JSP,需婆变化的也各自生成Htm 1或JSP,由一个模板JSP,把这些不同部分动态地引入(include 方法)。还有一个要考虑的问题就是胖幕的选择问題.为处理完用户请求.模板被自动涮用來显示,这个显 示一定要知道用户关心的屛幕是有哪些部分组成°所以可以考虑把所有屛幕的定义放在一个集中的文件里, 如一个java文件或文木文件°由于考虑到屏幕定义文件将來的变更可能性垠好使用文木文件如一个XML 文件.这样将來更改不用重新编译可以根据用户输入的URL和参数可以映射到某一个结果屏幕然有 可能
18、还要根据动作的执行结果选择不同的结果屏幕内容。所以需要一个请求与资源的匹配文件(XML),如 果一个URL请求有几种不同结果.则要在该文件中描明是否需要流控制(一种cont r oil cr对象)以 及不同流向的对应屏幕。32 Model在web系统中的应用Model对彖代表了商业规则和商业数据,存在于EJB层和Web层。在J 2EE的规范中.系统有些数据需 要存储于数据库中,如用户的底号信息(a cco u nt model),公司的数据(compa ny mo del)等.也 有一些不需要记录在数据库里的,如某用户浏览的十前产品目录(catalog model),他的购物内容(shopp
19、i ng car t model)等。这些model数据存在于哪一层要根据它们的生命周期和范圈來决定。在Web 层有HttpSess ion和Se r vletContext及Java B e an对飲來存储数据,在EJ B层则有EJB來存储数 据和逻辑。Web层的Java Bean的model对象存储f E J B层m o del对彖的数拯的拷贝。因为EJB 层有很筝不同的mode 1对彖,所以We b层可以通过一个Mo d elM a nager來控制EJB层的各mo d el 对紀在Mo d elManger中可以封装使用后台model对歛的方法。在EJB层把所有的数据和规则都模式化为E
20、JB也是不恰、的。如可以把存取数据库的对彖模式化为D A O对象。DAO中可以封装与具体数据库的交互细节.如可以读写不同的表,多个数据库.甚至蚩种数据库。 如定的的m o del对象可以是一个O rderDAO,它可能要同时处理Order表,O r derStatus表和O rderltemLines表。鼻还有可以考农使用V alu e对毀。一个V alue 对彖可以封装远程对象大I为每 一个读远程对象的屈性都可能是一个远程过程调用,都会耗费网络资源。可以在EJB的远程对辣中使用V a lue对彖.在远程对彖中一次性得到Value对象來得到所有属性的值。3. 3 Control 1 e r在W
21、eb系统中的应用亠Controller对象协调M odel与View,把用户请求翻译 成系统识别的爭件。在Web层,一般有一个M a inS e rvlet(或Ma i n.jsp),接收所有请求它可以调 用屛幕流管理器(S c re c n F Io w Ma n ge)决定下一个屏幕。一般还有一个请求处理器Re q uestProc e ssor,包含所有请求都需要做的处理逻轧如把请求翻译成系统爭件(Request ToEvent)。请求处理 器通常还包含一个代理对象ClientCont r o 1 W e blmp 1 z它是EJB层的逻辑处理的在Web层的代 理。在EJB层,有一个Cl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培养学生工艺品制作能力的教学计划
- 小班班级的课外活动安排计划
- 供应链管理与生产工作的融合计划
- 歌唱社团音乐创作计划
- 青少年成长中的班主任角色计划
- 大众健美操一级组合(一)及创编动作组合 说课稿-2023-2024学年高一上学期体育与健康人教版必修第一册
- 制定工作计划实现新年愿景
- 社交企业责任计划
- 担保合同具有哪一些特点
- 护理咨询科工作总结计划
- 第3课时-六宫格数独课件
- 导游基础知识课程标准
- 西方政治思想史-课件
- 直线加速器专项施工方案
- 联苯二氯苄生产工艺及产排污分析
- 储能设备项目采购供应质量管理方案
- 2020闽教版信息技术四年级(下册)全册教案
- 美国房地产市场特征、框架与周期演变
- 光伏发电工程施工组织设计施工工程光伏发电工程光伏发电施工组织设计
- 民政局离婚协议书模板(4篇)
- 导数应用举例
评论
0/150
提交评论