(计算机应用技术专业论文)mvc设计模式在web开发中的研究与应用.pdf_第1页
(计算机应用技术专业论文)mvc设计模式在web开发中的研究与应用.pdf_第2页
(计算机应用技术专业论文)mvc设计模式在web开发中的研究与应用.pdf_第3页
(计算机应用技术专业论文)mvc设计模式在web开发中的研究与应用.pdf_第4页
(计算机应用技术专业论文)mvc设计模式在web开发中的研究与应用.pdf_第5页
已阅读5页,还剩66页未读 继续免费阅读

(计算机应用技术专业论文)mvc设计模式在web开发中的研究与应用.pdf.pdf 免费下载

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

文档简介

西南交通大学硕士研究生学位论文第1 页 摘要 随着i n t e r n e t 的普及和发展,越来越多的企业开始采用基于i n t e r n e t 的系 统作为企业内部、外部信息的发布、交换以及管理、交易的平台。这种被称为 “w e b 应用服务”或“b r o w s e r s e r v e r ”的分布式应用系统,可以显著地降低企 业在开发、升级、管理维护和培训方面的费用,因而它代表了未来企业级i t 应 用的趋势,也必将成为技术热点。然而传统b s 项目开发中还存在着很多问题, 如由于没有良好的软件设计模式( d e s i g np a t t e r n ) 和开发框架,客户端页面 文件里包含了大量的涉及业务逻辑的代码,而当用户对页面的需求有所变化时, 往往需要对核心业务代码进行修改,甚至会影响到整个业务逻辑,最终导致了 开发成本的升高、开发效率的降低。更严重的是,对于一些大型系统,由于需 求的多次变更,对核心代码的多次修改,导致系统混乱,开发工作无法继续进 行。这些问题的产生,是因为所采用的软件设计模式没有采用。分而治之”的 方法,不能从根本上解决表示层与业务逻辑层、业务逻辑层与数据层相分离的 问题。 本文是针对目前w e b 开发过程中存在的这些问题,通过对基于州c 设计模 式( m o d e l - v i e w - c o n t r o l l e rd e s i g np a t t e r n ) 的研究、当前主流开发框架的 分析、比较以及对j 2 e e 平台e j b 组件的具体研究,构造个适合于大型b s 系 统的开发框架。 本论文反映的主要工作包括: 1 。研究m v c 设计模式“分而治之”的主要设计思想、工作流程,有助于提高 系统的的可维护性、代码重用性、扩展性、可移植性等。并从理论原理入 手,研究、分析和比较现有的基于m v c 设计模式的主流开发框架 2 研究j 2 e e 体系结构,深入探讨e j b 组件技术,采用s t r u t s + e j b 开发框架来 实现柳c 设计模式。 3 在开发设计实现中国民航总局通信一导航一监视综合数据库信息平台项目 中,充分体现了m v c 设计模式思想整个系统采用四层体系结构进行分层 及模块化设计,特别对系统设备许可证模块视图、控制器和模型进行了详 细设计,完成其典型功能,实现并验证m v c 设计模式的优越性。 4 最后对系统视图、控制器存在的问题进行探讨,并提出可行的优化方案。 关键词:设计模式;m v c ;浏览器朋虽务器;框架 西南交通大学硕士研究生学位论文第n 页 a b s tr a c t w i t ht h ep o p u l a r i t ya n dd e v e l o p m e n to ft h ei n t e r n e t 。m o r ea n dm o r e e n t e r p r i s e sh a v eb e g u n u s i n gs y s t e m sb a s e di n t e r n e ta sp l a t f o r m so f i n t e r n a la n de x t e r n a li n f o r m a t i o nd i s s e m i n a t i o n 、 m a n a g e m e n t 、e x c h a n g e a n dt r a n s a c t i o n t h i sk i n do fd i s t r i b u t e da p p i i c a t i o n ,w h i c hi sc a l l e d 。w e ba p p l i c a t i o n o r b r o w s e r s e r v e r 。c a nr e m a r k a b l yr e d u c ee x p e n s ei n d e v e l o p m e n t ,p r o m o t i o n ,m a n a g e m e n t , m a i n t e n a n c ea n dt r a i n i n go f e n t e r p r i s e s t h e r e f o r e ,i tr e p r e s e n t st h ef u t u r ea p p l i c a t i o nt r e n do f e n t e r p r i s e c l a s si t a n da l s ow i l lc e r t a i n l yb eah o tt e c h n o l o g y h o w e v e r , t h e r ea r es t i l lm a n yp r o b l e m si nb st r a d i t i o n a lp r o j e c td e v e l o p m e n t b e c a u s et h ea b s e n c eo fe x c e l l e n ts o f t w a r ed e s i g np a t t e r na n dd e v e l o p m e n t f r a m e w o r k ,c l i e n tp a g ed o c u m e n tc o n t a i n san u m b e ro fr e l a t e db u s i n e s s l o g i cc o d e ,m a k i n gp r o g r a m e se n i g m a ;w h e nt h eu s e rn e e d sc h a n g e s ,t h e y o f t e nn e e dt om o d i f yc o r eb u s i n e s sc o d e :e v e n ,i tw i l la f f e c tt h ee n t i r e b u s i n e s sl o g i c ,w h i c he v e n t u a l l yl e dt oi n c r e a s ed e v e l o p m e n te x p e n s e , r e d u c ed e v e l o p m e n te f f i c i e n c ya n dd e l a yi nd e li v e r ys y s t e m s m o r es e r i o u s p r o b l e mi s t h a t f o rs o m el a r g e s c a l es y s t e m s ,a sar e s u l to fc h a n g i n g d e m a n d sa n dm o d i f y i n gc o r ec o d em a n yt i m e s ,c a u s e st h es y s t e mt ob e c h a o t i ca n dt h ed e v e l o p m e n tw o r kw i l lb eu n a b l et oc o n t i n u et oc a r r yo n t h ep r o d u c t i o no ft h e s ep r o b l e m si sb e c a u s et h eu s e ds o f t w a r ed e s i g n p a t t e r n sh a v en o tu s e 。d i v i d ea n dr u l e 。a p p r o a c ha n dc a n n o tf u n d a m e n t a l l y s o l v et h ep r o b l e m sw h i c hs e p a r a t et h ee x p r e s s i o nl a y e rf r o mt h eb u s i n e s s l o g i cl a y e r ,a n dt h eb u s i n e s sl o g i cl a y e rf r o mt h ed a t al a y e r a i m sa tt h ee x i s t i n gw e bp r o b l e m si np r e s e n t ,t h r o u g hr e s e a r c h i n g t h em v cd e s i g np a t t e r n 、a n a l y s i n ga n dc o m p a r i n gc u r r e n tm a i n s t r e a m d e v e l o p m e n tf r a m e w o r k 、a n dr e s e a r c h i n gt h ee j bm o d u l e o fj z e ep l a t f o r m , t h i sp a p e ri sw r i t t e nt op r o p o s eaf e a s i b l ed e v e l o p m e n tf r a m e w o r kt h a t i ss u i t a b l ef o rs o m el a r g es c a l eb sd e v e l o p m e n t t h em a i nw o r kt h i sp a p e rr e f l e c t si n c l u d e s : 西南交通大学硕士研究生学位论文第1 i l 页 1 r e s e a r c h i n gt h em a i nd e s i g n ,w o r kf l o wo ft h em v cd e s i g np a t t e r n d i v i d ea n dr u l e 。i ti sa b l et oh e l pt oi m p r o v et h em a i n t a i n a b i l i t y 、 c o d er e u s a b i l i t y 、e x p a n d a b i l i t y 、p o r t a b i l i t yo ft h es y s t e m 。a n ds t a r t i n g f r o mt h ep r i n c i p l eo ft h et h e o r y ,r e s e a r c h 、a n a l y s i sa n dc o m p a r i s o nt h e e x i s t i n gm a i n s t r e a md e v e l o p m e n tf r a m e w o r k sw h i c hb a s e so nw cd e s i g n p a t t e r n 2 r e s e a r c hj 2 e ea r c h i t e c t u r e 、d i s c u s st h ee j bm o d u l et e c h n o l o g y a n da c h i e v em v cd e s i g np a t t e r nb yu s i n gs t r u t s + e j bd e v e l o p m e n tf r a m e w o r k 3 u s em v c d e s i g np a t t e r na d e q u a t e l y i nc 从c c o m m u n i c a t i o n n a v i g a t i o n s u r v e i l l a n c e i n t e g r a t e d d a t a b a s e a n d i n f o r m a t i o np l a t f o r m t h ee n t i r es y s t e mu s e sf o u r l a y e ra r c h i t e c t u r ea n d m o d u l a rd e s i g n b a s e do nt h em v cd e s i g np a t t e r n t h i sp a p e rd e s i g nv i e w 、 c o n t r o l l e ra n dm o d e lo ft h ed e v i c e1 i c e n s em o d u l eo ft h i ss y s t e mi nd e t a i l , f i n i s hi t st y p i c a lf u n c t i o n s ,a n da c h i e v ea n dv a l i d a t et h es u p e r i o r i t y o fm v cd e s i g np a t t e r n 4 f i n a l l y ,d i s c u s st h ep r o b l e m se x i s ti nv i e wa n dc o n t r o l l e ro f s y s t e m ,a n dp r o p o s et h ef e a s i b l eo p t i m u mp l a n k e y w o r d s :d e s i g np a t t e r n ;m v c ;b s ;f r a m e w o r k 西南交通大学硕士研究生学位论文第l 页 第1 章绪论 1 1 当前业内w e b 开发现状 随着i n t e r n e t 技术的普及和发展,近年来,以w e b 为核心的企业内部网或 外部网正在发挥越来越大的作用,b s 软件体系结构应运而生,它将数据和应用 程序放在服务器上,客户端采用w e b 浏览器,商务规则一旦改变,只需要对服务 器进行升级,从而增强了系统的效率、安全性和可扩展性。 自从w e b 的产生到现在短短几年的发展,w e b 技术已从最初简单的文档的浏 览发展到当今复杂电子商务的应用,其间共经历了静态文档、动态交互页面和 实时可伸缩的事务处理三个阶段。 w e b 技术发展的第一阶段静态文档。这一阶段w e b 服务器基本上只是一 个h t t p 的服务器,它负责接收客户端浏览器的访问请求,建立连接。 w e b 技术发展的第二阶段动态交互页面阶段。第一阶段的w e b 技术无法 满足人们进一步的要求。随着高版本h t m l 的出现和浏览器对f r o m 表单的支持 使w e b 技术进入了其发展的第二阶段:动态交互页面阶段。数据库技术适于对大 量的数据进行组织管理,w e b 技术拥有较好的信息发布途径,这两种技术天然的 互补性决定其相互融合成为技术发展的必然趋势。将w e b 技术与数据技术相结 合,开发动态的w e b 数据库应用,已成为当今w e b 技术研究的热点所在。 w e b 技术发展的第三阶段实时可伸缩的事务处理阶段。随着i n t e r n e t 用户的迅速增加,人们渴望网络能给他们的生活带来更多的便利,电子商务的 出现对商家和用户都产生了深远的影响,也使w e b 的应用深入到人们日常生活 中的每个角落。随着w e b 技术、分布式对象技术以及安全保密技术的发展,为 在w e b 上实现电子商务提供有了有力的技术保障。在w e b 上进行实时可伸缩的 事务处理,实现电子商务,w e b 必须解决几个关键问题,即如何实现实时的事务 处理、可伸缩性、可扩展性、安全性与客户认证等技术难题。 然而随着w e b 技术的发展,使用何种设计思想建立设计模型以及采用何种 开发框架最能达到方便、快捷、开发迅速、系统层次分明、后期维护方便等效 果,成了当前国内外业界w e b 项目开发所关注的首要问题,也是本论文讨论的 西南交通大学硕士研究生学位论文第2 页 重点所在。 1 2 本文研究的内容与意义 过去2 0 多年间,软件设计面临的最大挑战,在于需求和环境条件日益复杂 时软件运行的高效运作和维护消耗。计算机应用的问题越来越庞大,繁杂,运 行环境逐步走向网络化、并行化、多操作系统环境。面对日益庞大和复杂的问 题,人们不得不在不同的配置和操作系统环境下,并行地实现复杂软件的运行。 尽管程序设计语言的描述能力、软件开发的工程管理技术在不断提高,但仍然 不能满足复杂软件的设计期望。产生的软件系统经常由于种种原因而重用性差、 不可移植、难于维护。 在软件开发中,我们常常会遇到这样的情况:对某种业务操作开发了一个 模块,当再为与之为似的业务操作开发模块时,我们不能运用已经开发过的成 果,而只得把代码全部复制一遍来生成一个新的模块,软件模块的可复用性无 从谈起。再者,对于软件的可维护性来说,不好的设计模式( d e s i g np a t t e r n ) 可能会带来这样一种结果:软件开发人员交给用户的是一个正常运行的系统, 但是对用户来说,这是一个功能静止不变的系统,用户对他只能使用,而不能 通过更改配置( 其实也根本没有更改配置的地方) 来改变软件的运行方式,或者 要改变其运行方式只有让程序员重新开发。 特别是当前火热的基于b s 构架的w e b 系统。由于w e b 技术的迅速发展,b s 项目成为当前业界软件系统开发的重要部分,然而传统b s 项目开发中还存在 着很多问题,如由于没有良好的设计模式和开发框架作为依托,客户端页面文 件里包含了大量的涉及业务逻辑的代码,使得程序晦涩难懂;而当用户对页面 的需求有所变化时,往往需要对核心业务代码进行修改。甚至,牵一动百,影 响到整个业务逻辑,最终导致了开发成本的升高、开发效率的降低和系统延迟 交付。更严重的是,对于一些大型系统,由于需求的多次变更,对核心代码的 多次修改,导致系统混乱,开发工作无法继续进行。 以上都是采用不恰当的软件设计模式带来的后果。那么,如何提供给用户 一个具有可移值性、可重用性、可维护性、可扩展性的良好的系统呢? 这就需 要我们按照软件工程的研究方法,采用合适的软件设计模式和开发框架结构。 西南交通大学硕士研究生学位论文第3 页 对于小型系统,人们经常跳过复杂的设计,直接书写代码,而对大型综合 复杂系统,设计模式的选择以及独立的软件体系框架结构设计就必不可少了。 理论和实践证明,良好的、易于维护的软件体系框架结构,对于降低设计风险、 提高软件质量及移植性、后期技术升级、保证开发进度都至关重要。 基于这样的现状,当期业界提出了不少方法试图解决这些问题。比如 c h r i s t o p h e ra l e x a n d e r 发表的很多关于工程和建筑模式的论文引出了后来软件 设计模式的概念;后来又由e r i c hg a m m a 、r i c h a r dh e l m 、r a l p hj o h n s o n 和j o h n v l i s s i d e s 四人合著的设计模式:可重用的面向对象的软件元素( d e s i g n p a t t e r n s :e l e m e n t so fr e u s a b l eo bj e c t 心i e n t e ds o f t w a r e , ) 一书引发 出a b s t r a c tf a c t o r y ,a d a p t e r 等具体的设计模式。而本文主要通过对m v c 软件 设计模式的探讨和研究,提出基于m v c 设计模式的s t r u t s + e j b 软件开发框架以解 决现b s 开发中存在的这些问题,并通过对具体的系统设计来描述该设计模式的 设计流程,最后结合w c 设计模式对该系统进行总结分析,剖析出当前系统存在 的不足之处,并针对问题提出合理的优化方案,以达到更好的开发效果。 1 3 论文结构及本人承担的主要工作 本论文就当前业界w e b 软件项目开发存在的问题作为重点,对当前软件项 目开发存在的多种设计模式进行阐述和对比,提出m v c 设计模式的优越性;介 绍了当前业界比较流行的几种实现m v c 设计模式的开发框架,如s t r u t s 框架、 s p r i n g 框架、j s f 框架等,并将m v c 的设计思想成功的运用到中国民航总局的 通信一导航一监视综合数据信息平台中来,实现了通信一导航一监视综合数据信息 平台复杂应用的开发环境。下面介绍下本论文的主要结构。 第1 章绪论本章主要介绍开发大型软件系统需要具有可移值性、可重用 性、可维护性、可扩展性的良好的系统特性,介绍当前业界状况和对软件设计 模式以及开发框架结构的研究意义,介绍论文的主要结构和作者本人的主要工 作。 第2 章l l 、c 设计模式( m o d e l w i e w - c o n t r o l l e r d e s i g n p a t t e r n ) 。本章介绍了 模式定义、分类以及研究模式与软件开发的之间的关系和意义,并引出模式中 当前发展比较成熟的m v c 设计模式。介绍了m v c 设计模式的原理、优缺点以及 西南交通大学硕士研究生学位论文第4 页 实现w c 设计模式的多种开发框架,如s t r u t s 框架、s p r i n g 框架、j s f 框架等。 其中论文着重介绍了当前比较热门的s t r u t s 框架的m v c 原理、核心组件以及工 作实现流程。 第3 章j 2 e e 技术。本章主要介绍j 2 e e 技术平台的体系、层次结构、核心 组件及a p i ,其中论文主要介绍了j 2 e e 平台的关键技术e j b 组件技术,并 探讨了s t r u t s 框架和e j b 组件技术结合使用实现w c 设计模式的技术可行性。 第4 章基于m v c 设计模式的民航通信导航监视综合数据信息平台的设计与 实现。把m v c 模式的设计思想结合到具体的项目系统得开发中来,描述该设计 思想在具体系统模块中的实现流程。最后结合m v c 设计模式在具体项目中出现 的问题提出自己的2 个优化方案。 本论文结合的系统民航通信一导航一监视综合数据信息平台是民航总局 在全国范围内对全国7 个地方空管局进行全国通信一导航一监视台站、设备、设 备备件及维修记录、内部文件、人员与执照、任务管理、综合报表、台站频率 覆盖计算等多方位的大型综合数据信息平台。该项目于2 0 0 5 年1 0 月正式开始 开发。由于系统相对庞大,对可移植性、可重用性、可维护性、可扩展性都要 求很高,因此在项目的开发中,我们引入了州c 软件设计模式,并基于该模式, 提出s t r u t s + e j b 的软件开发框架。在整个系统的开发中,笔者参与了系统的总 体设计、数据库设计、以及监视设备综合查询模块、报表模块、监视设备综合 管理模块、设备备件与维修记录管理模块、人员与执照管理模块、系统管理模 块等多个系统大模块的详细设计、编码、测试以及文档工作。在开发过程中充 分体现了m v c 设计模式思想,整个系统采用四层体系结构进行分层及模块化设 计。在本论文中笔者特别对系统设备许可证模块视图、控制器和模型进行了详 细设计,完成其典型功能,实现并验证了m v c 设计模式的优越性,奠定了本论 文的基础。 西南交通大学硕士研究生学位论文第5 页 第2 章m v c 设计模式 2 1 模式的定义及分类 在2 0 世纪7 0 年代,c h r i s t o p h e ra l e x a n d e r 发表了很多关于工程和建筑 模式方面的论文。随后,软件行业才逐渐接纳了这种最初建立于工程和建筑方 面的模式的思想,尽管在此之前软件业中已有此种思想的萌芽。软件业中模式 概念的普及是由e r i c hg a m m a 、r i c h a r dh e l m 、r a l p hj o h n s o n 和j o h nv l i s s i d e s 四人合著的设计模式:可重用的面向对象的软件元素( d e s i g n p a t t e r n s :e l e m e n t so fr e u s a b l eo b j e c t o r i e n t e ds o f t w a r e ) ) 一书引发 的蚓。 然而,软件开发中的模式是什么呢? 没有一个公认的定义。简单的说,模 式就是情景中一个问题经过证实的一个方案。但是,这个简单的定义可能造成 对模式的误解。c h r i s t o p h e ra l e x a n d e r 写道:“每个模式描述一个在我们的环 境中不断重复出现的问题,然后描述这个问题的方案核心,使你可以多次使用 同一方案,而不必进行重复工作” 近年来,关于软件开发中的模式的最有影响的出版物d e s i g n p a t t e r n s :e l e m e n t so fr e u s a b l e 叻j e c t 一一o r i e n t e ds o f t w a r e ) ,其定义模 式如下: “模式是三段值,表示特写情境、问题与方案之间的关系。” 根据这个定义,模式是多种情形中可以使用的问题解。 r i c h a r dg a b r i e l 提供了一个有趣的定义: 。每个模式是三段值,表示情境,这个情境中重复出现的问题及解决这些 问题的一定软件配置之问的关系。” 由此可见,模式是供有经验的设计人员发现问题和解决问题的处理方法。 众所周知,专家并不从低级结构考虑问题,而是建立高级抽象,模式就鼓励人 们标识与记录这些高级抽象 模式能改进开发人员之间的通信,使他们可以更快地学习,从而开发更好 西南交通大学硕士研究生学位论文第6 页 的软件。多年来,出现了多种不同的模式,包括: 设计模式。 在面向对象的系统设计中,可以认为,类及其生成的对象是构成面向对象 系统的最基本要素:采用设计方法组合这些元素得到面向对象系统得构件,同 时这些构件的设计方法在经过不断的改进和完善后逐渐成型,成为构成面向对 象系统得基本参考,也称为设计模式。 对软件设计而言,设计模式是最重要的模式。通常是面向对象的,包括体 系结构( 系统设计) 、设计( 组件交互) 和编程( 特定语言技术) 等。它是情境 设计中标准设计问题的重复性解决方案。设计问题必须进一步调查之后才能解 决。问题通常发生在一定的环境或者情形中,称为情境。解决方案就是这些问 题的答案,帮助我们在一定情境中解决这些问题。 分析模式。 描述可复用分析模型,在域分析中非常有用,设计各种域,包括交易、度 量、会计和组织关系。 过程模式 描述软件过程设计。具体地说,他们描述开发软件成功而经过证实的方法 与活动。 组织模式 描述组织与项目的结构与实践。 其他域特定模式 2 2 研究模式的目标和意义 正如所见,现在有很多关于模式的定义,但是所有的定义都有一个共同的 主题:与在特定环境下成对出现的问题解决方案的重现相关。 模式的共同特征如下: 模式来源于经验。 模式总是以一种结构化格式记录出现。 模式的出现避免了重新设计和创造。 模式存在于不同程度的抽象当中。 西南交通大学硕士研究生学位论文第7 页 模式总在不断地被完善。 模式是可重用的认为总结的经验。 模式可以用来交流设计和最佳实践。 多个模式可以一同使用,以解决复杂的问题。 模式是从经验中总结出来的,基于经过证实的方案。模式只有在实际系统 中多次得到证实之后才能成为模式。因此模式一方面促进复用,一方面又防止 重复劳动,最终使我们能更快更高效的工作。 模式还增加表达能力,改进建筑师与设计人员之间的通信,使我们可以按 照前所惟有的方式考虑常见结构性方案。模式鼓励通过结合解决大问题。 模式是前人经验与智慧的结晶,研究与使用模式可以带来如下好处: ( i ) 模式可以帮助人们更快更好的设计软件。包括: 标识组件、组件内部结构及组件之间的关系 确定组件的粒度及交互 定义组件接口 ( 2 ) 模式更好的促进了复用: 可以帮助设计者思考,允许设计者在更高抽象层次上讨论系统的设计。 模式是书写文档和学习的辅助手段。学习模式有助于开发者理解己有系统,提 高自己的设计水平。按照系统所用的模式来描述系统,有助于提高系统的可理 解性。 使系统更健壮,更灵活,便于日后修改。 设计模式使设计者可以复用优秀的解决方案。通过复用已有的设计,设 计者可以从中汲取他人的经验,不必从头寻求重复问题的解决方案。 2 3m v c 设计模式 随着i n t e r n e t 技术的普及和发展,近年来,以w e b 为核心的企业内部网或 外部网正在发挥越来越大的作用,b s 软件体系结构应运而生,它将数据和应用 程序放在服务器上,客户端采用w e b 浏览器,商务规则一旦改变,只需要对服务 器进行升级,从而增强了系统的效率、安全性和可扩展性。 然而传统b s 项目开发中还存在着很多问题,如由于没有良好的开发框架, 西南交通大学硕士研究生学位论文第8 页 客户端页面文件里包含了大量的涉及业务逻辑的代码,使得程序晦涩难懂:而 当用户对页面的需求有所变化时,往往需要对核心业务代码进行修改。甚至, 牵一动百,影响到整个业务逻辑,最终导致了开发成本的升高、开发效率的降 低和系统延迟交付。更严重的是,对于一些大型系统,由于需求的多次变更, 对核心代码的多次修改,导致系统混乱,开发工作无法继续进行。针对这样现 象,急需具有一种新的方法来改善软件开发的状况,由此m v c 设计模式诞生了。 m v c ( m o d e l - - v i e w - c o n t r o l l e r ) 设计模式是基于j 2 e e 的w e b 应用开发的首 选软件设计模式,当前许多流行的框架也都是基于m v c 设计模式的。它由 t r y g v er e e n s k a u g 提出,并首先被应用在s m a l l t a l k - 8 0 环境中,使许多交互和 界面系统的构成基础,m i c r o s o f t 的m f c 基础类也遵循了m v c 的思想。早在7 0 年代, i b m 就推出了s a n f r o n s c i s i c o 项目计划,其实就是m v c 设计模式的研究。随着网 络应用的快速增加。大多数的w e b 层应用框架都可以使用不同变化类型的 m v c 设计模式。m v c 模式对于w e b 应用的开发无疑是一种非常先进的设计思想,无 论你选择哪种语言,无论应用多复杂,它都能为你理解分析应用模型时提供最基 本的分析方法,为你构造产品提供清晰的设计框架,为你的软件工程提供规范 的依据嘲。 尽管m v c 设计模式很早就提出,但在w e b 项目的开发中引入c 却是步履维艰。 主要原因:一是在早期的w e b 项目的开发中,程序语言和h t 札的分离一直难以实 现。c g i 程序以字符串输出的形式动态地生成h t m l 内容。后来随着脚本语言的出 现,前面的方式又被倒了过来,改成将脚本语言书写的程序嵌入在h t m l 内容中。 这两种方式有一个相同的不足之处即它们总是无法将程序语言和h t m l 分离。二 是脚本语言的功能相对较弱,缺乏支持m v c 设计模式的一些必要的技术基础。直 到基于j 2 e e 的j s pm o d e l2 问世时才得以改观。它用j s p 技术实现视图的功能, 用s e r v l e t 技术实现控制器的功能,用j a v a b e a n 技术实现模型的功能“ 实际上在现实中,业界主要有2 3 种基本设计模式如下”“: ( 1 ) a b s t r a c tf a c t o r y :提供一个创建一系列相关或相互依赖对象的接口, 而无需指定它们具体的类。 ( 2 ) a d a p t e r :将一个类的接口转换成客户希望的另外一个接口。a d a p t e r 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 ( 3 ) b r i d g e :将抽象部分与它的实现部分分离,使它们都可以独立地变化。 西南交通大学硕士研究生学位论文第9 页 ( 4 ) b u i l d e r :将一个复杂对象的构建与它的表示分离,使得同样的构建过 程可以创建不同的表示。 ( 5 ) c h a i no fr e s p o n s i b i l i t y :为解除请求的发送者和接收者之间耦合, 而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链 传递该请求,直到有一个对象处理它。 ( 6 ) c o m m a n d :将一个请求封装为一个对象,从而使你可用不同的请求对客 户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。 ( 7 ) c o m p o s i t e :将对象组合成树形结构以表示“部分一整体”的层次结构。 它使得客户对单个对象和复合对象的使用具有一致性。 ( 8 ) d e c o r a t o r :动态地给一个对象添加一些额外的职责。就扩展功能而言, 它比生成子类方式更为灵活。 ( 9 ) f a c a d e , 为子系统中的一组接口提供一个一致的界面,f a c a d e 模式定 义了一个高层接口,这个接口使得这一子系统更加容易使用。 ( 1 0 ) f a c t o r ym e t h o d :定义一个用于创建对象的接口,让子类决定将哪一 个类实例化f a c t o r ym e t h o d 使一个类的实例化延迟到其予类。 ( 1 1 ) f l y w e i g h t , 运用共享技术有效地支持大量细粒度的对象。 ( 1 2 ) i n t e r p r e t e r :给定一个语言,定义它的文法的一种表示,并定义一 个解释器,该解释器用来表示解释语言中的句子。 ( 1 3 ) i t e r a t o r :提供一种方法顺序访问一个聚合对象中各个元素,而又不 需暴露该对象的内部表示。 ( 1 4 ) m e d i a t o r :用一个中介对象来封装一系列的对象交互。中介者使各对 象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间 的交互。 ( 1 5 ) m e m e n t o :在不破坏封装性的前提下,捕获一个对象的内部状态,并 在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。 ( 1 6 ) o b s e r v e r :定义对象间的一种一对多的依赖关系,以便当一个对象的 状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。 ( 1 7 ) p r o t o t y p e :用原型实例指定创建对象的种类,并且通过拷贝这个原 型来创建新的对象。 ( 1 8 ) p r o x y , 为其他对象提供一个代理以控制对这个对象的访问。 西南交通大学硕士研究生学位论文第l o 页 ( 1 9 ) s i n g l e t o n :保证一个类仅有一个实例,并提供一个访问它的全局访 问点。 ( 2 0 ) s t a t e :允许一个对象在其内部状态改变时改变它的行为。对象看起 来似乎修改了它所属的类 ( 2 1 ) s t r a t e g y :定义一系列的算法,把它们一个个封装起来,并且使它们 可相互替换。本模式使得算法的变化可独立于使用它的客户。 ( 2 2 ) t e m p l a t em e t h o d :定义一个操作中的算法的骨架,而将一些步骤延 迟到子类中。t e m p l a t e m e t h o d 使得子类可以不改变一个算法的结构即可重定义 该算法的某些特定步骤。 ( 2 3 ) v i s i t o r :表示一个作用于某对象结构中的各元素的操作。它使你可 以在不改变各元素的类的前提下定义作用于这些元素的新操作。 这2 3 种基本设计模式是对特定问题经过无数次经验总结后提出的能够解决 它的优雅的方案,是解决问题的基本方案。m v c 设计模式包含了太多的内容,它 是凌驾于这2 3 种基本设计模式之上的。在m v c 中,v i e w 可以用c o m p o s i t ep a t t e r n 来实现;v i e w 和m o d e l 的关系可以用o b s e r v e rp a t t e r 来体现:c o n t r o l l e r 和v i e w 的关系可以用s t r a t e g yp a t t e r n 来实现;m o d e l 通常是一个调停者,可以采用 m e d i a t o rp a t t e r n 来实现。所以,实际上m v c 是由以上几种基本设计模式组合实 现的。 m v c 设计模式的结构适用于那些多用户、可扩展、可维护或具有很高交互 性的系统,它可以很好地表达用户的交互和系统模式,并且很方便地用多个视 图显示多套数据,使系统能够方便地支持其他新的客户端类型。使用m v c 设计 模式编写的系统,它的代码重复率达到最低。由于分离了模式中的控制和数据 表现,可以分清开发者的责任,缩短开发工期,加速产品推向市场。 2 3 1m v c 设计模式原理 m v c 设计模式是当前b s 开发的标准框架设计模式,由3 个部分组成:m o d e l ( 模 型) ,v i e w ( 视图) ,c o n t r o l l e r ( 控制器) 它提倡将其三者相分离,使得用户接 口与相应模型的藕合度大大降低,开发出的软件更便于修改。 m v c 模式的模型一视图一控制器的关系和功能原理可以用图2 1 来表示。它不仅 西南交通大学硕士研究生学位论文第1 i 页 实现了功能模块和显示模块的分离,同时还提高了应用系统的可维护性、可扩 展性、可移植性和组件的可复用性饼。 图2 - 1b v c 组件类型的关系和功能原理 ( 1 ) 模型( m o d e l ) :模型部件是软件所处理问题逻辑在独立于外在显示内容 和形式情况下的内在抽象,封装了问题的核心数据、逻辑和功能的计算关系, 他独立于具体的界面表达和i o 操作 模型封装的是数据源和所有对这些数据的操作。模型负责维护数据并提供数 据访问方法,在实际开发过程中。模型还是执行某些任务的代码。至于这些任 务以什么形式显示给用户,却并不是模型所关注的问题。模型只有一系列的公 开方法,通过这些公开方法,可以取得操作模型的所有功能。在这些公开方法 中,有些是取值方法,让系统其他部分可以得到模型的内部数据,还有一些改 值方法用于修改模型的数据。一般来说,模型必须有方法关联视图,以便在模 型的数据发生变化时,可以通知视图。模型就是业务流程或状态的处理以及业 务规则的制定。业务流程的处理过程对其他层来说是暗箱操作,模型接受视图 请求的数据,并返回最终的处理结果。业务模型的设计可以说是m v c 最主要的 核心m v c 设计模式告诉人们,把应用的模型按一定的规则抽取出来,抽取的 层次很重要,这也是判断开发人员是否优秀的依据m v c 并没有提供模型的设 计方法,而只告诉开发人员应该组织管理这些模型,以便于模型的重构并提高 模型的可重用性,这点对应用的开发人员非常重要。业务模型还有一个很重要 的模型,那就是数据模型。数据模型主要指实体对象数据的持续化保存。比如 西南交通大学硕士研究生学位论文第1 2 页 要将一张订单保存到数据库,或从数据库获取订单的操作。可以将这个订单处 理模型单独列出,所有有关数据库的操作只限制在该模型中。 ( 2 ) 视图( v i e w ) :把表示模型数据及逻辑关系和状态的信息及特定形式展 示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形 式或视图。 一个模型可以有多个视图,而一个视图理论上也可以同不同的模型关联起 来,对于视图而言,模型就是可重用的代码。视图用来显示模型的数据,并决 定模型以什么样的方式显示给用户。模型在状态发生改变时要及时通知视图, 以便所有对应的视图都能够得到及时更新。 视图代表用户交互界面,对于w e b 应用来说,可以是h t m l 页面,也可能 是x h t m l ,、x m l 或a p p l e t 随着应用复杂性和规模性增大,界面的处理也变得 极具挑战性。一个应用可能有很多不同的视图,m v c 设计模式对于视图的处理 仅限于视图上数据的采集,以及用户的请求,而不包括在视图上的业务流程的 处理。业务流程的处理应交予模型。比如一个订单的视图只接受来自模型的数 据并显示给用户,以及将用户界面的输入数据和请求传递给控制器和模型。 ( 3 ) 控制器( c o n t r o l l e r ) :处理用户与软件的交互操作,控制提供模型中任 何变化的传播,确保用户界面于模型间的对应联系;它接受用户的输入,将输 入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。 通常一个视图具有一个控制器。 控制器封装的是外界作用于模型的操作。通常,这些操作会通过控制器转发 到模型上,并调用模型中相应的方法。控制器在模型和视图之间起到了桥梁的 作用,控制器处理用户在视图上的输入,并转发给相应的模型。这样模型和视 图两者之间可以做到松散耦合,甚至可以彼此不知道对方的存在,而由控制器 连接起这两个部分。控制器负责调用模型的改值方法以改变模型的状态,同时, 控制器会通知所有的已登记视图刷新数据显示。 控制器可以理解为从用户接收请求,然后将模型与视图匹配在一起,共同完 成用户的请求。控制器的作用也很明显,它清楚地告诉人们,它就是一个分发 器,决定选择什么样的模型,什么样的视图,可以完成特定的用户请求,控制 器不做任何数据处理。例如,用户点击一个联接,控制器接受请求后,并不处 理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求 西南交通大学硕士研究生学位论文第1 3 页 的视图返回给用户 综上所述,模型。即相关的数据逻辑,它是对象的内在业务处理。视图是模 型的外在表现形式,一个模型可以对应一个或者多个视图。同样,一个视图也 可以对应多个模型。视图还具有与外界交互的功能。控制器是模型与视图联系 的纽带,控制器提取通过视图传递进来的外部信息并转化成相应事件,然后由 控制器

温馨提示

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

评论

0/150

提交评论