已阅读5页,还剩55页未读, 继续免费阅读
(计算机应用技术专业论文)mvc模式在系统框架设计中的研究与应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西安建筑科技大学硕士学位论文 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 ,模型一视图控制器) 是目前广泛流行的软件设计 模式。最初,m v c 只是应用在软件界面设计中,随着网络w e b 应用的快速增 加,m v c 在系统框架设计中大量采用,如s t r u t s 、s p r i n g 等,m v c 的应用越来 越广泛,因此对m v c 在系统框架设计中的应用进行研究,具有极大的开发应 用意义。 在详细分析研究m v c 的基础上,本文采用e j b 、前控制器模式、d a o ( d a t a a c c e s so b j e c t ) 、d t o f d a t at r a n s f e ro b j e c t ) 等技术与模式设计实现了一个轻量级 的系统框架( 简称为i s b u i l d e r 框架) ,该框架不象s t r u t s 等只是w e b 层的应用开 发框架,它涉及到数据持久层的应用开发。i s b u i l d e r 框架层次结构划分清晰明 了,便于软件开发人员分工合作及软件的后期维护与技术升级。目前,这个框 架己获得公司的具体项目开发应用,经测试稳定性好,速度快。 虽然i s b u i l d e r 框架在公司的实际项目应用开发中获得很好的评价,但这只 是一个轻量级的系统框架,难以适应大规模的企业应用。结合实际项目开发经 验、理论分析,论文最后指出了该框架目前存在的缺点及以后如何进行升级改 进。 关键字:m v c系统框架应用 西安建筑科技大学硕士学位论文 m v cp a t t e r ni nr e s e a c ha n d a p p l i c a t i o no fs y s t e m f r a m e w o r k d e s i g n s p e c i a l t y :c o m p u t e r a p p l i c a t i o n t e c h n o l o g y n a m e :a i h u ad n i n s t r u c t o r :w e n j i n gz h a o a b s t r a c t a tp r e s e n t , m v c ( m o d e l - v i e w c o n t r o l l e r ) i sas o f t w a r ed e s i g np a t t e r no f u s i n g w i d e l y a tf i r s t ,m v cw a so n l yag u ip a t t e r n ,h o w e r v e r , w i t ht h es o 尚v v a r e sw h i c h a r eu s e di nw e bf i e l d i n c r e a s i n gq u i c k l y , m v ci sa d o p t e dw i d e l yi ns y s t e m f r a m e w o r kd e s i g n , s u c ha ss t r u t s ,s p r i n ga n ds oo n ,a n dm v ci su s e dw i d e l ya n d w i d e l y s or e s e a c h i n gt h ea p p l i c a t i o no fm v c i ns y s t e mf r a m e w o r kd e s i g ni sv e r y s i g n i f i c a n ti nt h ed e v e l o p i n gs o f t w a r e a l i g h t w e i g h tf r a m e w o r k ( f o rs h o r t i s b u i l e rf r a m e w o r k ) i sd e s i g n e di nt h i s p a p e r b a s e do nt h e s e t e c h n o l o g y o rp a t t e r n s :e j b ,f r o n tc o n t r o l l e rp a t t e r n , d a o ( d a t aa c c e s so b j e c t ) ,d t o ( d a t at r a n s f e ro b j e c oa n ds oo na f t e ra n a l y s i z i n g a n d r e s e a c h i n gm v cp a t t e mi n d e t a i l u n l i k et h e a p p l i c a t i o nd e v e l o p m e n t f r a m e w o r k si nw e bl a y e r , i ti si n v o l v e di nt h ep e r s i s t e n c el a y e r i t sc l e a rl a y e ra n d s t r u c t u r em a k ef o rd e v e l o p e r sd i v i d i n ga n dc o o p e r a t i n gw o r k ,l a t t e rm a i n t e n a n c ea n d t e c h n o l o g yu p g r a d i n g a tp r e s e n t ,i ti su s e di ns o m ec o m p a n y s p r o j e c t s ,a n di tr u n s s t e a d i l ya n dq u i c k l y d u r i n gu s i n gi ns o m ec o m p a n y s p r o j e c t s ,t h ef r a m e w o r ki sa p p r a i s e d ,h o w e v e l i t i so n l yal i g h t w e i g h ts y s t e mf r a m e w o r k a n di td o e s n tf i t c o m p l e xe n t e r p r i s e a p p l i c a t i o n f i n a l l y , s o m ef l a w sl y i n gi ni ta n ds o i i l ew a y sa b o u th o wt ou p g r a d ei t a r ei n d i c a t e db a s e do nl i n k i n gt h e o r yw i t l lp r a c t i c e k e yw o r d s :m v cs y s t e ma r c h i t e c t u r ea p p l i c a t i o n 声明 8 二1 7 4 4 本人郑重声明我所呈交的论文是我个人在导师指导下进行的研究工 作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外, 论文中不包含其他人已经发表或撰写过的研究成果,也不包含本人或其他 人在其它单位己申请学位或为其它用途使用过的成果。与我一同工作的同 志对本研究所做的所有贡献均已在论文中作了明确的说明并表示了致谢。 申请学位论文与资料若有不实之处,本人承担切相关责任。 论文作者签名:奉法军 关于论文使用授权的说明 日期:圳j r 本人完全了解西安建筑科技大学有关保留、使用学位论文的规定,即: 学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布 论文的全部或部分内容,可以采用影印、缩印或者其它复制手段保存论文。 ( 保密的论文在论文解密后应遵守此规定) 论文作者签名:奄瞎牟 导师签名: 注:请将此页附在论文首页。 日期:山f 罗纩 西安建筑科技大学硕士学位论文 第一章绪论 1 1 国内外研究现状 m v c ( m o d e l v i e w - c o n t r o l l e r ,模型视图控制器) 是目前广泛流行的软件设计 模式。早在7 0 年代,i b m 就推出了著名的s a n f r o n s c i s i c o 项目计划,即m v c 设计模式的研究吼最初,m v c 只是t r y g v er e e n s k a u g 为编程语言s m a u t a l k 一8 0 所发明的一种软件界面设计模式,m i c r o s o f t 的m f c 基础类库也遵循了m v c 的 思想,近来,随着j 2 e e 的成熟,m v c 正在成为j 2 e e 平台上推荐的一种设计 模型,并逐渐在p h p 和c o l d f u s i o n 开发者中运用,且有增长趋势。随着网络 w e b 应用的快速增加,m v c 在系统框架设计中大量采用,如s t t s ,采用m v c 设计,由c r a i gr m c c l a n a h a n 于2 0 0 0 年创建,2 0 0 1 年7 月s t r u t s1 0 发布,现 最高版本为1 1 ;m a v e r i c k ,同样采用m v c 设计,由j e f f s c h n i t z e r 等人创建, 2 0 0 1 年早期m a v e r i c k1 0 发布,现最新版本为2 2 ;其它的如s p r i n g 、w e b w o r k 、 t u r b i n e 、t a p e s t r y 、j s f 、d i n a m i e a 、v r a p t o r 等都是基于m v c 模式的w e b 应 用框架。可见,m v c 模式无疑是w e b 应用框架设计中广泛采用的一种非常先 进的思想,它为理解分析应用模型时提供最基本的分析方法,为构造产品提供 清晰的设计框架,为软件工程提供规范的依据。 1 2 课题研究意义 m v c 已成为系统框架设计中广泛采用的一种先进的框架设计模式,研究、熟 练掌握这一模式具有重要意义。虽然基于m v c 的w e b 应用框架繁多,但都有 自己的适用范围及缺点,如s t r u t s 只是一个w e b 层的应用开发框架,功能有限, 且开源项目在架构设计、版本升级、技术更新上速度快,不利于系统的后期维 护与升级;t u r b i n e 只是一个基于s e r v l e t 的服务器端j a v aw e b 框架,兼有开源 项目不利于系统的后续维护的缺点,其它框架的缺点在此不再一一述说。那么 又如何在借鉴这些成功的基于m v c 的w e b 开发框架的经验的基础上设计开发 自己的框架呢? m v c 模式提供了系统框架设计的基本思想,因此极有必要对系 统框架设计及m v c 模式进行研究。 1 3 项目中所做的工作与论文章节安排 1 3 1 项目中所做的工作 西安建筑科技大学硕士学位论文 i s b u i l d e r 系统是某公司自行研发的b 2 b 电子商务产品,研发环境为: w i n d o w sx p ,技术平台采用s u n 公司的j 2 e e ,选择w e b l o g i c 8 1 为w e b 服务 器,数据库为s q ls e r v e r2 0 0 0 。作者有幸参与了该系统的框架( 即i s b u i l d e r 框 架) 设计与实现及i s b u i l d e r 系统后台管理子系统的详细设计与编码。具体承担的 主要工作如下: 学习如何使用数据库设计工具e r w i n 及版本控制工具w i n c v s l 3 1 。 收集、删选资料,与页面设计人员协商讨论,初步确定页面设计的几条 原则。 参与i s b u i l d e r 框架的分析讨论,并编码实现该框架的m o d e l 部分。 参加i s b u i l d e r 系统后台管理子系统的详细设计讨论,且完成了该子系 统中设置用户付款方式、维护( 添加、删除、修改) 产品、退货等模块的编码及 测试。 编写用户操作手册初稿的部分文档。 1 3 2 论文章节安捧 本论文章节安排如下: 第一章绪论。介绍m v c 及系统框架的国内外研究现状、论文研究的意义。 第二章框架设计的重要性与原则。从企业的角度阐述了框架的概念,从软件工 程的角度说明了框架的重要性,最后介绍了框架设计的几个原则,即 分层原则、模块化原则、接口实现分离原则、细节隐藏原则、依赖倒 置原则。 第三章m v c 模式研究。随着m o d e l2 的出现,m v c 的应用越来越广泛,紧接 着论文分析了m v c 中包含的三种主要模式o b s e r v e r 、c o m p o s i t e 、 s t r a t e g y ,然后在详细阐述了m v c 模式结构的基础上,以添加产品用 例为例,说明如何设计一个视图页面。 第四章视图的设计研究与实现。介绍了m v c 模式中视图的主要功能及页面设 计中遵循的几个原则,然后以i s b u i l d e r 系统中添加产品用例为例,分 析研究了i s b u i l d e r 系统的视图层。 第五章控制器的设计研究与实现。介绍了前控制器模式及其五种实现方案一 s e r v l e t 前控制器、j s p 前控制器、基础前端基于s e r v l e t 的前控制器、 2 西安建筑科技大学硕士学位论文 过滤器前控制器、命令前控制器,然后在前控制器模式的基础上,以 i s b u i l d e r 系统中添加产品用例为例,结合s e r v l e t 前控制器、基础前端 基于s e r v l e t 的前控制器两种方案,分析研究了i s b u i l d e r 系统控制器。 第六章模型的设计研究与实现。分析研究了i s b u i l d e r 系统的模型设计。 第七章数据持久层的设计研究与实现。阐述了j a v a 技术中四种数据持久化的 方法:j d b c 法、实体b e a n 法、d a o 法、j d o 法,分析研究了i s b u i l d e r 系统数据持久层的设计。 第八章总结综述。主要对i s b u i l d e r 系统的框架设计进行总结,对框架存在的 缺陷提出了进行改进的方法。 3 西安建筑科技大学硕士学位论文 第二章框架的重要性与原则 2 1 框架的概念及其重要性 2 1 1 框架的概念 随着开源软件的兴起,各种各样的框架如雨后春笋,纷纷出现,如a p a c h e 组织下的框架类产品s t r u t s 、t u r b i n e 、t a p e s t r y ,s u n 公司的j s f 。那么,什么 是框架呢? 不论哪一种技术,都是为业务发展而服务,从这一角度来说,首先, 框架为企业的业务发展和战略规划服务,并服从于企业的愿景;其次,框架最 重要的目标是提高企业的竞争能力,包括降低成本、提高质量、改善客户满意 程度,控制进度等;最后,软件开发是一种知识活动,知识的聚集和积累至关 重要,框架能够采用一种结构化的方式对某个特定的业务领域进行描述,将这 个领域相关的技术以代码、文档、模型等方式固化下来。 不论是什么框架,都针对某一特定问题领域,并包括一组来源于问题领域的 抽象概念,这些抽象概念相互协作,提供一种扩展的形式,以实现重用。例如, s t r u t s 是一个针对w e b 开发的框架,基于m v c 模式设计,所以它必须为m o d e l 、 v i e w 、c o n t r o l l e r 建立抽象概念,且m o d e l 、v i e w 、c o n t r o l l e r 三者之间能相互 协作处理客户请求,在s t r u t s l 0 中,采用的是类继承的扩展方式,即对a c t i o n 进行扩展。 因此,框架是为支持企业的战略和业务发展而开发的软件,它最重要的职责 是在企业发展的过程中以一种有效的方式来积累知识资源,以实现重用,并将 之用于提高企业的核心竞争能力【5 1 。 2 1 2 框架的重要性 过去2 0 年问,软件设计面临的最大挑战,来自于需求和环境条件日益复杂 时,软件运行的高效生产和维护。计算机应用的问题越来越庞大、繁杂,运行 环境逐步走向网络化、并行化、多操作系统环境。面对日益庞大和复杂的问题, 人们不得不在不同的配置和操作系统环境下,并行地实现复杂软件的运行。尽 管程序设计语言的描述能力、软件开发的工程管理技术在不断提高,但仍然不 能满足复杂软件的设计期望。产生的软件系统经常由于种种原因而重用性差、 不可移植、难于维护。 随着软件复杂性的快速提高,用户需求的不断变化,软件系统框架结构的设 4 西安建筑科技大学硕士学位论文 计变得越来越重要。对于小型系统,人们经常跳过复杂的设计,直接书写代码, 而对大型综合复杂系统,独立的软件体系框架结构设计就必不可少了。理论和 实践证明,良好的、易于维护的软件体系框架结构,对于降低设计风险、提高 软件质量及移植性、后期技术升级、保证开发进度都至关重要。 2 2 框架设计的原则 软件框架对企业战略和业务发展的支持,体现在技术和业务两个方面。从 技术角度来说,软件框架随着技术的革新而不断地升级更新;从业务角度来说, 随着企业战略规划的实施、业务的发展,要求软件框架必须适应户用需求的不 断变化,软件框架建立于当前技术和一些基本原则的基础之上。 分层原则:分层是为了降低软件深度复杂性而使用的关键思想。从某种 意义上来看,层其实是一个粗粒度的组件,分层的目的是为了系统相似功能的 内聚,使系统更容易被理解,不同的部分能够容易被替换。在分层时,一般层 间的耦合度不宜过大,要慎重的设计层之间的类调用方式,尽量以接口的形式 调用。分布式软件体系j 2 e e ,对层之间的调用方式就是以接口的形式给出了要 求。同时,不同层之间仅需知道目标层的接口,而不需知道目标层的具体实现, e j b 的h o m e 接口和r e m o t e 接口就是这样。 模块化原则:模块是由一组隐藏元素和一组共享元素组成的离散单元, 此离散单元可以设计、实现和编译为一个可交付的可执行系统或子系统,这个 可执行的系统或子系统是一个执行单元。模块具有较高的内聚力和较低的外部 耦合,为达到较低的外部耦合,两个模块之间的接口必须相对稳定和静止,这 样,当对某个模块内部进行修改时,不会影响其它模块。模块化是化解软件广 度复杂的必然手段,模块化的目的就是让软件分工。 接口实现分离原则:面向接口编程,可以让复杂度日趋增高的软件降低 模块之间的耦合度,从而让各模块更轻松改进。在设计层间的接口时,除了考 虑开发平台的约束之外,还必须考虑业务需要,业务层中的对象和方法非常多, 它们之间的关系十分复杂,但对于其它层来说,并不关心这些细节,因此业务 层公布的接口必须简单、明了、和实现无关。可以使用设计模式的f a c a d e 模式 来简化层问的接口,e j b 中的s e s s i o nb e a n 和e n t i t yb e a n 区分就含有这种设计 思路。 5 西安建筑科技大学硕士学位论文 细节隐藏原则:很显然把复杂问题简化,把繁杂的细节隐去,能让软件 结构更清晰。j a v a 、c + + 语言中的封装原则以及设计模式中的f a c a d e 模式就体 现了这个原则的精神。 依赖倒置原则:依赖倒置原则可视为接口实现分离原则的深化。随着软 件结构的进一步发展,层与层之间、模块与模块之间的依赖逐渐加深,而层、 模块的动态可插拔要求在不断增大。为实现插拔要求,高层模块不应该依赖于 低层模块,高层模块和低层模块都应该依赖于抽象( 在j a v a 的术语中就是接口) , 抽象不应该依赖于细节,细节应该依赖于抽象。 6 西安建筑科技大学硕士学位论文 第三章m v c 模式研究 3 1m v c 模型的应用历程 在以往的w e b 应用中,都是以j s p 为中心,表示逻辑与业务处理混合在j s p 中,这种以j s p 为中心的m o d e l1 模型不利于软件开发人员的分工,难以适应 复杂业务的处理,鉴于此,研究人员提出了基于m v c 模式的m o d e l2 ,m v c 模式在w e b 应用中越来越广泛。 3 1 1 m o d e l l 在使用j a v a 技术建立w e b 应用的实例中,由于j s p 便于掌握、可实现快速 开发,可以非常容易地结合业务逻辑、服务端处理过程、嵌套h t m l 及脚本语 言,j s p 很快成了创建w e b 应用的主要技术。在j s p 页面中同时实现数据显示、 业务处理、流程控制,可以快速地完成应用开发,缩短开发周期。这种以j s p 为中心的开发模型称之为m o d e l1 ( 如图3 1 ) 。 a p p l i c a t i o ns e r v e r、 b r o w s e r i _ 一 8 9 r 。 d a t a b a s e 一 图3 1 m o d e l l 架构图 m o d e l1 虽然能快速地完成应用开发,且在小规模的应用开发时有非常大的 优势,但是当业务逻辑错综复杂、用户需求不断变化时,m o d e l1 很难适应大规 模软件工程开发。首先,应用的实现一般是基于过程的,在m o d e l1 中,一组 j s p 页面实现一个业务流程,流程控制和业务处理混合在j s p 中,如果要根据 业务变化进行改动时,必须在多个地方改动,这种改动非常耗时、棘手,不利 于软件系统的扩展和更新。其次,由于系统不是建立在模块上的,业务逻辑和 表示逻辑混合在j s p 页面中,没有进行抽象和分类,不利于软件系统业务的重 用。 3 1 - 2 m o d e l 2 m o d e l2 表示的是基于m v c 模式的框架模型。鉴于m o d e l1 的不足之处, m o d e l2 将显示逻辑、业务处理、流程控制进行分离,m o d e l 代表应用的业务逻 7 西安建筑科技大学硕士学位论文 辑处理,通过j a v a b e a n 、e j b 组件等实现业务处理,v i e w 代表应用的显示逻辑, 由j s p 、x m l 等实现与用户的交互,c o n t r o l l e r 代表应用的处理过程控制,由 s e r v l e t 实现流程及业务处理结果的转发( 如图3 2 ) 。通过把显示逻辑、业务处理 和应用逻辑分成不同的组件实现,组件之间可以进行交互和重用,弥# b tm o d e l l 的不足。由于m o d e l2 具有组件化的优点,从而更易于实现对大规模系统的开 发和管理。 厂、 一 a p p l i c a t i o ns e r v e r 、 i i 一 忪w s e r 一叫8 e r v l 。卜丘j a y 、 d a t a b a s e 。|肿r 弋竺 图3 2 m o d e l2 架构图h 3 j 3 2 三种主要模式的分析 m v c 作为模式,提供了一个系统框架的设计组织原则,可以按照模型、表 示方式和行为等角色把一个应用系统的各个部分之间的耦合解脱、分割开来, 因此,严格地说,m v c 应是架构模式,而不是通常的设计模式,它可以由许多 设计模式组合而成,其中最主要的,与m v c 关系密切的设计模式是o b s e r v e r 模式、c o m p o s i t e 模式、s t r a t e g y 模式。 3 2 1o b s e r v e r 模式 o b s e r v e r 模式又叫做发布一订阅( p u b l i s h s u b s c r i b e ) 模式、模型视图 ( m o d e l ,e w ) 模式、源一监听器( s o l 】r c e l i s t e n e r ) 模式、从属者e p e n d e n t s ) 模式。 在分类上,o b s e r v e r 模式属对象型模式,也是行为型模式。 o b s e r v e r 模式定义了对象间的一种一对多的依赖关系,多个观察者对象同时 监听某一个主题对象,当主题对象的值、状态、数据显示方式发生改变时,所 有与它有依赖关系的多个观察者对象都得到通知,以便自动调整、更新。 m v c 通过使用发布订阅方式分离了业务处理逻辑m o d e l 和显示逻辑v i e w , v i e w 反映了m o d e l 的内容和状态,当m o d e l 的内容或状态发生变化时,m o d e l 通知相关的v i e w 刷新数据,以便正确反映m o d e l 的即时内容和状态,m o d e l 与v i e w 之问的这种通信机制可通过o b s e r v e r 模式实现。 3 2 1 1 模式结构 r 西安建筑科技大学硕士学位论文 o b s e r v e r 模式的结构如图3 3 所示,图中的类及方法只是示意性的。 抽象主题( s u b j e c t ) :抽象主题仅提供一个接口,所有的观察者对象都保 存在一个聚集v e c t o r 对象里。a t t a c h ( ) 方法用来注册观察者对象,d e t a c h 0 方法用 来删除观察者对象,当具体主题的内部状态或显示方式发生改变时,调用 n o t i f y o b s e r v e r s o 方法来通知所有注册过的观察者对象。 抽象观察者( o b s e r v e r ) :抽象观察者角色一般用一个接口实现,该接口 只包含一个更新方法u p d a t e ( ) 。 具体主题( c o n c r e t e s u b j e c t ) :具体主题负责实现对观察者引用的聚集的 管理方法,并将有关状态存入具体观察者对象,在具体主题的内部状态发生改 变时,调用超类的n o t i f y o b s e r v e r s o 方法给所有注册过的观察者发出通知。 具体观察者( c o n c r e t e o b s e r v e r ) :具体观察者实现抽象观察者的更新接 口,以便自身的状态与主题的状态相协调。 图3 3o b s e r v e r 模式结构示意图 在运行时,客户端首先创建一个具体主题类( c o n c r e t e s u b j e c t ) 的私有实例, 以及一个私有观察者对象( o b s e r v e r ) ,然后调用主题对象( s u b j e c t ) 的a t t a c h o 方 法,向主题对象注册这个观察对象,即将其加入到聚集v e c t o r 中。若客户端调 用主题的业务方法时,改变了主题对象的内部状态,主题对象在状态发生变化 时,调用超类的n o t i f y o b s e r v e r s o 方法,通知所有注册过的观察者对象,观察者 对象在接到通知后调用u p d a t e o 方法进行调整、更新。 3 2 1 2 优缺点 优点: 抽象耦合。只知道一个观察者对象的聚集,并不了解具体观察者属于哪 个类,所有观察者都遵循抽象的o b s e r v e r 类的简单接口。这样,主题对象和观 9 0 曰崮 翠 ;三二篆三哪正 赢兰童一 嘉 西安建筑科技大学硕士学位论文 察者对象之间建立了一个抽象的低耦合。 支持广播通信。主题对象发送通知无需指定观察者,如何处理通知由观 察者决定。 缺点: 随着主题对象的直接和间接的观察者的增多,通知所有的观察者很耗 时。 当主题对象之间存在循环依赖时,将导致系统崩溃。 若对观察者的通知以线程异步投递,系统必须保证投递以自恰的方式进 行。 缺乏相应机制使观察者知道所观察对象发生变化的过程。 3 2 2c o m p o s i t e 模式 c o m p o s i t e 模式又叫做部分整体( p a r c w h o l e ) 模式,分类上属对象型模式, 同时也是结构型模式 1 l 】。 c o m p o s i t e 模式定义了包含简单对象和组合对象的类层次结构,简单对象可 以被组合到复杂对象中,而组合的对象可以再被组合,从而将对象组织到树形 结构中。c o m p o s i t e 模式描述整体与部分的关系。 c o m p o s i t e 模式将单个对象与组合对象同等看待,m v c 的一个重要特征就是 v i e w 可以嵌套,嵌套的组合视图可用于任何视图可用的地方,而且可以管理嵌 套视图,这种将组合视图与其组件平等对待的思想正是c o m p o s i t e 模式的应用。 3 2 2 1 模式结构 根据实现接口方式的不同,c o m p o s i t e 模式分为安全式和透明式两种,安全 式c o m p o s i t e 模式在c o m p o s i t e 里声明所有用来管理子类对象的方法,模式结 构如图3 4 所示,图中的类及方法只是示意性的。 抽象构件( c o m p o n e n t ) :抽象构件定义了参加组合的对象的公共接口及 其默认行为,可以用来管理所有的子对象,但抽象构件并不给出管理子对象的 方法。 树叶构件( l e a f ) :树叶构件定义了参加组合的原始对象的行为,树叶对 象没有下级子对象。 树枝构件( c o m p o s i t e ) :代表参加组合有下级子对象的对象,树枝构件类给出 1 0 西安建筑科技大学硕士学位论文 了所有管理子对象的方法a d d ( ) 、r e m o v e ( ) 、g e t c h i l d o 。 图3 4 安全式c o m p o s i t e 模式结构示意图 透明式c o m p o s i t e 模式的结构与安全式c o m p o s i t e 模式的结构差别不是很 大,不同的是在c o m p o n e n t 里面声明所有用来管理子类对象的方法a d d ( ) 、 r e m o v e ( ) 、g e t c h i l d o ( 如图3 5 ) ,这样所有的构件类都有相同的接口。 c o m p o n e n t 钳3 p e r a t i o n 0 :v o i d e a d d ( c o m p o n e n t ) :v o i d 呤r e m o 憾r c o m p n e n t 、 v o i d l e a f 爵鬲而磊磊丽西i 可;丽 ! ! ! ! 竺塑 盘2 c o m p o n e n t v e c t o r :v e c t o r o p e r a t i o n 0 :v o i d 咚a d d ( c o m p o n e n t ) :v o i d 咚r e m o v e ( c o m p o n e n t ) v o i d g e t c h i l d ( c o m p o n e n t ) e n u m e r a t i o n o p e r a t i o n 0 v o i d q a d d ( c o m p o n e t ) :v o i d r e m o v e ( c o m p o n e n t ) :v o i d 9 e t c h l l d ( c o m p o n e n t ) e n u m e r a t i o n 图3 5 透明式c o m p o s i t e 模式结构示意图 3 2 2 2 优缺点 优点: 简化客户端代码。客户端无需知道某对象是简单对象还是组合对象,可 以以一致的方式使用这些对象。 更容易增加新类型的组件。新组件可以方便地加入已有组合对象中而不 1 1 西安建筑科技大学硕士学位论文 用改变客户端代码。 缺点: 不易控制树枝构件的类型。 难以以继承的方法增加新的行为。 3 2 3s t r a t e g y 模式 s t r a t e g y 模式又称政策( p o l i c y ) 模式,分类上属对象型模式,同时也是行为型 模式 “】。s t r a t e g y 模式定义了一系列的算法,并将每一个算法封装在具有共同 接口的独立类中,使它们可以互相替换,从而使算法可以独立于使用它的客户 端而变化。 m v c 的另一重要特征是,可在不改变v i e w 的情况下改变v i e w 对用户输入 的响应方式,这对适应用户响应逻辑的变化来说至关重要。m v c 把响应逻辑封 装在c o n t r o l l e r 中,并建立c o n t r o l l e r 的类层次结构,只需对原有c o n t r o l l e r 做 适当改变,便可创建新的c o n t r o l l e r 。v i e w 使用c o n t r o l l e r 予类的实例来实现某 一特定响应策略,当响应策略发生变化时,只需用不问种类的c o n t r o l l e r 实例替 换即可。v i e w - c o n t r o l l e r 的这种关系正是s t r a t e g y 模式的应用。 3 2 3 1 模式结构 s t r a t e g y 模式的结构如图3 6 所示,图中的类及方法只是示意性的,具体策 略类可以有多个,而不止模式结构示意图中c o n c r e t e s t r a t e g y a 、 c o n c r e t e s t r a t e g y b 、c o n c r e t e s t r a t e g y c 三个。 图3 6s t r a t e g y 模式结构示意图 环境( c o n t e x t )色:持有一个s t r a t e g y 类的引用及一个策略方法 c o n t e x t i n t e r f a c e 0 。 抽象策略( s t r a t e g y ) :给出所有具体策略类所需的接口,通常由一个接口 1 2 西安建筑科技大学硕士学位论文 或抽象类实现。 具体策略( c o n c r e t e s t r a t e g y ) :包装了相关的算法或行为。 3 2 3 2 优缺点 优点: s t r a t e g y 类层次的等级结构为c o n t e x t 定义了可重用的相关算法或行为 族,恰当使用继承可以把公共的代码移到父类中,从而避免代码重复。 策略模式提供了替代继承的方法。如果直接继承c o n t e x t ,给以不同的 行为,会将行为加到c o m e x t 中,从而将算法的实现与c o n t e x t 混合起来,使 c o n t e x t 难以理解,维护和扩展,而且不能动态地改变算法,将算法封装在独立 的s t r a t e g y 类,可以使得算法独立于c o n t e x t 改变,容易切换扩展。 可以提供相同行为的不同实现。 缺点: 策略模式由客户端自行决定使用哪个策略类,这意味着客户端必须了解 所有s t r a t e g y 之间有何不同,以便恰当选择。 策略模式等级结构具有数目繁多的策略类,增加了对象的数目、c o n t e x t 和s t r a t e g y 之间的通信开销。 3 3 m v c 模式结构 3 3 1 模式结构 图形用户界面承担着向用户展示问题模型,及与用户进行输入输出交互的 重要作用,用户希望保持图形界面的相对稳定性,但当问题模型的数据或状态 发生变化时,更希望调整图形界面的显示内容与形式,这对界面设计提出了新 的要求。为解决这一问题,t r y g v er e e n s k a u g 等人将业务处理逻辑与显示逻辑 分离,发明了m v c 设计模式( 模式结构如图3 7 ) 。近来,m v c 模式在多层次企 业级w e b 应用及框架设计中广泛使用。 随着企业级应用中业务关系的越来越庞大,系统中各对象之间的关系十分 复杂,为了将各对象间的耦合度减至最小,m v c 结构将各种对象按功能进行分 割,分为模型( m o d e l ) 、视l 虱( v i e w ) 、控$ 1 j = 器( c o n t r o l l e r ) 三个层次。 模型是m v c 最主要的核心,包含了应用问题的核心数据、逻辑关系和计算 功能,封装了所需的数据,提供了完成业务流程处理的规则与操作过程。业务 西安建筑科技大学硕士学位论文 流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回 最终的处理结果给视图,至于视图请求在模型中的处理过程、处理规则、处理 请求时系统的状态对视图来说是透明的。在视图请求的处理过程中,若模型的 数据状态、数据显示方式发生改变时,模型会通知相关视图进行调整与更新, 同时模型并提供视图访问自身状态的能力。一个模型可能对应多个视图。 图3 7m v c 模式结构4 3 】 视图代表与用户进行输入输出交互、向用户显示问题模型的图形用户界 面,对w e b 应用来说,可以概括为h t m l 界面,或为x h t m l 、j s p 、x m l 、 a p p l e t 等。随着企业应用的复杂性和规模性的扩大,界面的处理变得更具挑战 性,一个应用可能有很多不同的视图,且有可能随着模型对视图请求处理结果 的不同,对视图有不同的要求。m v c 设计模式对于视图的处理仅限于将用户界 面的输入数据和请求传递给控制器和模型、规定数据显示方式、接受来自模型 的处理结果数据并显示给用户,而不包括在视图上的业务流程的处理,业务流 程的处理全权由模型负责。当模型通知视图数据状态、数据显示方式发生改变 时,视图将自动更新,以维护数据表现的一致性。一个视图可能对应多个模型。 控制器负责定义应用程序的行为、接受并分派来自视图的用户请求、告诉模 型做什么、传递用户信息给模型、选择恰当的视图以用于应答显示、解释用户 的输入并将它们映射为模型可执行的操作,控制器并不处理任何业务信息。 3 3 2 优缺点 m v c 的优点表现在以下几个方面: 1 4 西安建筑科技大学硕士学位论文 可以为一个模型在运行时同时建立和使用多个视图。变化一传播机制可 以确保所有相关的视图及时得到模型数据变化通知,从而使所有关联的视图和 控制器做到行为同步。 视图与控制器的可插拔性,允许更换视图和控制器对象,而且可以根据 需求动态打开或关闭、甚至在运行期问进行对象替换。 模型的可移植性。模型独立于视图,可以把一个模型独立地移植到新平 台工作,而只需在新平台上对视图和控制器进行新的修改。 潜在的框架结构。可以基于此模型建立应用程序框架,不仅只是用在界 面设计中。 方便维护,灵活性好。m v c 模式中,三层各司其职,互不干涉,当某 一层需求发生变化时,只需更改相应层中代码,而不会影响其它层的代码。 有利于分工开发及重用。在m v c 模式中,系统按层分开,能更好地实 现开发中的分工,网页设计人员可专注于视图开发,业务熟悉人员可专注于业 务层开发。同时,分层也有利于各层的重用,如视图层可做成一个通用的界面。 m v c 的不足表现在以下几个方面: 增加了系统结构和实现的复杂性。对于简单的界面,严格遵循m v c , 使模型、视图、控制器分离,会增加结构的复杂性,并可能产生过多的更新操 作,降低运行效率。 视图与控制器过于紧密连接。视图与控制器虽相互分离,但确实联系紧 密,没有控制器的存在,视图的应用很有限,反之亦然,这就妨碍了它们的独 立重用。 视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需 要多次调用才能获得足够的显示数据,对未变化数据的不必要的频繁访问,将 损害操作性能。 目前,一般高级的界面工具或构造器不支持m v c 模式,改造这些工具 以适应m v c 需要和建立分离的部件的代价高昂,从而造成使用m v c 的困难。 1 5 西安建筑科技大学硕士学位论文 第四章视图的设计研究与实现 4 1m v c 模式中视图的功能 在m v c 模式中,视图仅仅是与用户进行交互的图形界面,不处理任何业务 逻辑或业务流程控制,它一般负责实现下面功能: 采集、处理对用户的信息表示,并提供一种机制允许用户与系统交互, 如提供某些窗v i 让用户能输入客户信息,看到按钮、列表框和消息等。 处理用户界面事件,将用户输入动作转换为业务逻辑层能理解的请求, 这些事件或请求将触发业务逻辑层中的处理流程。 管理其它与外部系统之间的数据进出接口,例如数据读入和产生法定的 数据输出。 处理报表生成及批处理文件。 当然,并不是每一个视图界面都具有上面的全部功能,每一个视图界面依据 其与用户交互的信息内容、交互方式、用户输入的动作、表单具有的控件的不 同而具有不同的功能。 4 2 视图设计原则 视图的价值在于,将显示逻辑与有关业务规则和系统运行的程序逻辑明显地 区分开,并集中处理显示方面的问题。用户与系统直接接触的是视图界面,因 此用户对系统的喜好、满意度,视图界面的设计起着一个重要的作用。视图界 面的设计千变万化,但都遵循一定的原则。界面设计指导原则: 1 )尽量保持一致性。设计外观和功能一致性界面是最为重要的设计目标。 信息在窗体上的组织方式、菜单项的名称及其排列、图标的大小和形状、任务 执行次序都应该贯穿系统始终。人有习惯性,一旦学会一种做事方式就很难改 变,如果一个新的应用程序提供与众不同的操作方式,肯定会降低它的生产效 率,并且用户也不会乐意接受。 2 ) 为老用户提供快捷键。整天使用某个应用系统的用户愿意花些时间学会 使用快捷键操作方式。当老用户明确知道自己要做什么的时候,他们很快就对 冗长的菜单选择次序和大量的对话框操作失去耐心,因此,快捷键的使用可以 针对某一给定任务减少交互步骤,而且,设计者应该为用户提供实用功能,允 西安建筑科技大学硕士学位论文 许用户创
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 硫酸生产工岗前基础培训考核试卷含答案
- 耐蚀塑料工诚信品质模拟考核试卷含答案
- 水上打桩工安全素养能力考核试卷含答案
- 固态电解质制造工改进考核试卷含答案
- 智能楼宇管理员设备技术规程
- 野生动物保护员班组管理强化考核试卷含答案
- 铁合金回转窑工安全综合水平考核试卷含答案
- 公司数字印刷员岗位工艺技术规程
- 多膛炉焙烧工安全文明考核试卷含答案
- 结构疲劳寿命预测改进措施
- 漂流景区营销方案
- 必修《苏武传》林莉莎备课
- 边坡脚手架计算书
- 2023儿童特发性矮身材诊断与治疗中国专家共识(完整版)
- 门式起重机安全培训
- 2022勘察设计服务成本核算指南
- 第十二章 疫苗与免疫预防
- 术中低体温护理查房
- 湖南省居民基本医疗保险门诊慢特病待遇资格认定申请表
- 《爱的教育》阅读分享课课件
- 医院物业管理方案2
评论
0/150
提交评论