(计算机应用技术专业论文)基于web框架中设计模式的研究及其应用.pdf_第1页
(计算机应用技术专业论文)基于web框架中设计模式的研究及其应用.pdf_第2页
(计算机应用技术专业论文)基于web框架中设计模式的研究及其应用.pdf_第3页
(计算机应用技术专业论文)基于web框架中设计模式的研究及其应用.pdf_第4页
(计算机应用技术专业论文)基于web框架中设计模式的研究及其应用.pdf_第5页
已阅读5页,还剩65页未读 继续免费阅读

(计算机应用技术专业论文)基于web框架中设计模式的研究及其应用.pdf.pdf 免费下载

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

文档简介

摘要 摘要 框架技术是很重要的软件重用技术,传统的开发模式已经不能满足大型w e b 应用系 统的开发需求。w e b 应用框架可以提高w e b 应用系统开发的效率,虽然这在一定程度上 限制了开发人员的创造力,但是它带来了稳定的软件质量和可重用的组件,降低开发的 费用和复杂性,降低系统部署与维护的开销,提高系统的开发速度和质量尤其适用于开 发较大型的项目,但是想要有效地复用系统设计的结果就很困难。 现有的w e b 系统中普遍存在可复用程度低、可维护性差等问题。而设计模式使系 统开发者可以更加简单方便地复用成功的设计结果,设计模式可以用来解决软件设计过 程中反复出现的问题,并且使用设计模式,可以有效地提高软件的可复用性,可靠性和 可维护性。从而设计模式也越来越被软件人员重视,成为了当今软件领域以及其他领域 的研究和应用热点。 本文首先分析了设计模式和国内外研究的现状与框架技术,综述了设计模式的定 义、描述方法、分类等相关概念,并分析和探讨了面向对象设计的基本原则。然后,使 用u m l 描述了几种常用的设计模式,详细分析了其内涵与适用范围,并说明了设计模 式与软件框架的关系。接着分析了o b s e r v e r 模式存在的不足,并利用程序设计语言的新 功能对其进行改进;分析了s t r a t e g y 模式存在的不足,并结合抽象工厂模式对其进行改 进。 s t r u t s 是实现m v c 模式的具体应用框架之一,其核心为一个灵活的、基于j a v a s e r v l e t s ,j a v a b e a n s ,x m l ( e x t e n s i b l em a r k u pl a n g u a g e ) 等标准技术的控制层。s t r u t s 提供 了自己的控制器组件,还整合e j b ,j d b c 等数据访问技术构造模型组件。本文从网上购 物系统的实际出发,基于一个改进后的s t r u t s x 框架,在框架的设计过程中运用了几种 已有和改进的设计模式。使系统具有高可靠性、可扩展性和可重用性的特点。 关键词:设计模式;框架;模式改进;s t r u t s :网上购物系统 大连交通人学t 学硕+ 学位论文 a b s t r a c t n ef r a m e w o r ki s v e r yi m p o r t a n t s o f t w a r er e u s et e c h n o l o g y ,a n dt h et r a d i t i o n a l d e v e l o p m e n tm o d e lc a n n o tm e e tt h ed e v e l o p m e n tn e e d so ft h el a r g e s c a l ew e b a p p l i c a t i o n w e ba p p l i c a t i o nf r a m e w o r kc a ni m p r o v ew e ba p p l i c a t i o ns y s t e md e v e l o p m e n t se f ! 厅c i e n c y a l t h o u g ht os o m ee x t e n t ,w h i c hl i m i t s t h ed e v e l o p e r s c r e a t i v i t y ,i th a sb r o u g h ts t a b i l e s o f t w a r eq u a l i t ya n dr e u s a b l es o f t w a r ec o m p o n e n t s ,i tr e d u c e sd e v e l o p m e n t sc o s ta n d c o m p l e x i t y ;i tr e d u c e ss y s t e md e p l o y m e n ta n dm a i n t e n a n c ec o s t s ;a n di ti m p r o v e ss y s t e m d e v e l o p m e n ts p e e da n dq u a l i t y ,p a r t i c u l a r l ys u i t e dt od e v e l o pl a r g e rp r o j e c t s ,h o w e v e r ,i f w e w a n tt or e u s et h er e s u l to fs y s t e md e s i g ne f f e c t i v e l y i ti sv e r yd i f f l c u l t i nt h ee x i s t i n gw e bs y s t e m u n i v e r s a l l yi te x i s t sr e u s a b l el o wl e v e l i sl o wa n d m a i n t a i n a b i l i t yi sn o tg o o d b u tt h ed e s i g np a t t e r ne n a b l et h es y s t e md e v e l o p e rt o r e u s e s u c c e s s f u ld e s i g nr e s u l tm o r ec o n v e n i e n t l ya n dm o r es u c c i n c t l y ;d e s i g np a a e mc a nb eu s e dt o s o l v et h er e c u r r i n gp r o b l e m si nt h es o f t w a r ed e s i g np r o c e s sa n da l s ou s et h ed e s i g np a t t e r n ;l t c a ni m p r o v es o f t w a r er e u s a b i l i t y ,s e c u r i t ya n dt h em a i n t a i n a b i l i t ye f f e c t i v e l y t h u st l l ed e s i g n p a t t e r ni sp a i dm o r ea n dm o r ea t t e n t i o nb yt h es o f t w a r ep e r s o n n e lt ob e c o m er e s e a r c ha n dt h e a p p l i c a t i o nh o ts p o ti nt h es o f t w a r ed o m a i nn o w a d a y sa sw e l la so t h e r d o m a i n s t i l i sa r t i c l ef i r s ta n a l y z e st h ed e s i g np a t t e r na n dt h ed o m e s t i ca n df o r e i g nr e s e a r c h s a c t u a l i t ya n dt e c h n i c a lf r a m e w o r ka n di t s u m m a r i z e st h ed e f i n i t i o no fd e s i g np a t t e r n ,t h e d e s c r i p t i o nm e t h o d t h ec l a s s i f i c a t i o na n dr e l a t e dc o n c e p t s a n di ta n a l y z e sa n dt od i s c u s s e s t h eo b j e c t o r i e n t e dd e s i g n sb a s i cp r i n c i p l e s t h e n i tu s e su m lt od e s c r i b ed e s i g np a t t e mo f s e v e r a lt y p e so fc o m m o nu s a g e s ;i ta n a l y z e si t sm e a n i n ga n ds c o p eo fa p p l i c a t i o ni nd e t a i l e d ; i te x p l a i n st h er e l a t i o n s h i pb e t w e e nt h ed e s i g np a t t e r na n ds o f t w a r ef r a m e w o r k t h e ni t a n a l y z e st h eo b s e r v e rm o d ei n s u f f i c i e n c i e sa n dt a k s ea d v a n t a g eo ft h ep r o g r a md e s i g n l a n g u a g e sn e wf u n c t i o nt oi m p r o v ei t ;i ta n a l y s e st h es t r a t e g ym o d ei n s u f f i c i e n c i e s ,a n d c o m b i n e sw i t ha b s t r a c tf a c t o r ym o d e lt oi m p r o v ei t s t r u t si so n eo ft h es p e c i f i ca p p l i c a t i o nf r a m e w o r k st or e a l i z em v cm o d e l ,i t sc o r ea f l e x i b l e b a s e do nj a v as e r v l e t s ,j a v a b e a n s ,x m l ( e x t e n s i b l em a r k u pl a n g u a g e ) s t r u t s p r o v i d e si t so w nc o n t r o l l e rc o m p o n e n t s a n di n t e g r a t e se j b ,j d b cd a t aa c c e s s i n gt e c h n o l o g y s t r u c t u r a lm o d e lg r o u p w a r e t h j sa r t i c l ei sf r o mt h ea c t u a lo n l i n es h o p p i n gs y s t e m ,b a s e do n a ni m p r o v e ds t r u t s xf r a m e w o r k , a n di th a su s e ds e v e r a ld e s i g np a t t e r nm o d e l sh a v i n gb e e n e x s i t e da n di m p r o v e di nt h ef r a m e w o r ko ft h ed e s i g np r o c e s s i tm a k e ss y s t e mw i t hh i g h s e c u r i t y ,e x t e n d i b i l i t ya n dr e u s a b i l i t y i i 摘要 k e yw o r d s :d e s i g np a t t e r n :f r a m e :d e s i g np a t t e r ni m p r o v e m e n t ;s t r u t s :w e b s h o p p i n gs y s t e m 大连交通大学学位论文版权使用授权书 本学位论文作者完全了解太整塞通太堂有关保护知识产权及保 留、使用学位论文的规定,即:研究生在校攻读学位期间论文工作的 知识产权单位属太羹塞通太堂,本人保证毕业离校后,发表或使用 论文工作成果时署名单位仍然为太整塞通太堂。学校有权保留并向 国家有关部门或机构送交论文的复印件及其电子文档,允许论文被查 阅和借阅。 本人授权太整塞通太堂可以将学位论文的全部或部分内容编入 中国科学技术信息研究所中国学位论文全文数据库等相关数据库 进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论 、 又。 ( 保密的学位论文在解密后应遵守此规定) 学位论文作者签名: 殇 日期: 加罗年沙月j 日 学位论文作者毕业后去向: 工作单位: 通讯地址: 申子信箱: 导师挠强嘶义 日期:彤年f 少月7 乡日 电话: 邮编: 大连交通大学学位论文独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作 及取得的研究成果。尽我所知,除了文中特别加以标注和致谢及参考 文献的地方外,论文中不包含他人或集体已经发表或撰写过的研究成 果,也不包含为获得太蔓褒通太堂或其他教育机构的学位或证书而 使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在 论文中作了明确的说明并表示谢意。 本人完全意识到本声明的法律效力,申请学位论文与资料若有不 实之处,由本人承担一切相关责任。 学位论文作者签名:a 易 日期:矶谚年i z - r 日侈日 第一章绪论 第一章绪论 1 1 论文的研究背景 随着近些年信息技术的高速发展,软件的系统越来越复杂,在软件工程领域中普 遍存在一个问题:重复地开发同一类型系统,这种费用是十分高昂的,这时人们开始 意识到,要真正达到软件产业发展需要的质量、软件的生产率、软件成本等问题,软 件复用是一个现实有效并且可行的方法,并且软件复用已经从原来的代码复用发展到 了软件方案的复用。随着软件规模越来越大、复杂性也随之增加,软件设计人员所要 考虑的问题也比从前增加了很多,如系统的可靠性、可移植性、可适应性等等。而不 只是单单考虑软件的功能性方面,这就需要有效的实现软件的复用,而“设计模式” 就可以为它提供最有效的手段。从而设计模式也越来越被软件人员重视,成为了当今 软件领域以及其他领域的研究和应用热点。 1 1 1 设计模式 人们在自己的环境中不断发现问题和寻找问题的解决方案的时候,发现有一些问题 及其解决方案不断变换面孔重复出现,但在这些不同的面孔后面有着共同的本质,这些 共同的本质就是模式。 设计模式是在人们长时间的软件开发实践中的一套反复使用、被多数人知晓的、经 过分类编目的、优秀代码设计经验的总结。它可以使开发者简单方便的复用已经成功的 设计结果,把已经证明了成熟的技术表达为设计模式可以使开发者很容易的理解设计的 思路。 在系统的设计中使用设计模式,可提高软件的可靠性、可伸缩性等方面的质量,并 且有助于软件开发团体内部以及软件开发团体之间的沟通。设计模式就是解决某个特定 的面向对象软件问题的特定方法。设计模式不是一种具体的“技术 ,它讲述的是思想。 1 1 。2 设计模式的国内外研究现状 在19 9 5 年,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 np a t t e r n s ) ) ( 中文为“设计模式”) ,是设计模式被证实提出的标志, 随着这本书的出版,设计模式的研究状况开始出现了一个高潮。 所以设计模式的正式研究历史也就十多年,是一个新兴的研究领域,同时也是一 个热点研究领域。设计模式起源于国外,目前的主要研究工作是在国外展开。现在, 国外的软件工程界正在把设计模式应用于软件体系结构、设计、编码和开发的过程和 大连交通人学i :学硕十学位论文 组织中去,其理论成果主要体现在从1 9 9 4 年开始的“程序设计模式年会论文集中。 设计模式在国内的研究和应用的时间都很短,还属于起步阶段。 目f j ,设计模式的研究工作在国内外主要集中在以下几个方面【2 】: ( 1 ) 新设计模式的发现与研究 每年国际上都举办包括p l o p ,e c o o p 等在内的学术会议对设计模式进行讨论,人 们正在各个领域总结设计模式,如通信领域、w e b 开发领域。设计模式与其他面向对 象技术的关系也是当前研究的热点。 ( 2 ) 设计模式的应用及具体化 虽然设计模式有很多,并且设计模式的提出也是针对所有领域的,但在使用时, 并不是所有的模式都可以拿来直接应用,需要对它进行改进,才能更加适合于该应 用,所以设计模式的应用和改进也是当前研究的热点。 ( 3 ) 模式的组织和索引 面对模式数量的增长,需要一种合适的覆盖所有模式的组织方法,并对其中的模 式提供一个索引,建造一个可以有效的支持高质量软件开发的真正成熟的模式系统。 ( 4 ) 形式化模式 人们提出了两类设计模式结构的描述方法,即图示化方法和形式化数学表示法, 目前的研究趋势是将这两类方法逐步靠拢。 ( 5 ) 设计模式的使用自动化和设计模式支持工具 ( 6 ) 设计模式和其他面向对象技术的关系 在我国,关于设计模式的研究相对滞后,而且多为已有设计模式的应用讨论,同 样,国内有关设计模式的书籍也大都为译作。从这点看来,要赶上世界上软件发达的 国家,我们还有很长的路需要走。但是随着设计模式在中国的应用越来越广泛,国内 的开发人员必将更多的参与到应用设计模式的项目开发中。随着大师们的设计模式思 想逐渐深入人心,中国设计模式的研究也必将走上新的台阶。 1 1 3 框架 框架是一个可复用的、“半成品 的应用程序,通过对框架的定制可以产生满足 客户具体需求的应用程序【3 1 。也可以这样定义是: “框架是一个可被程序开发者定制的 应用程序的骨架【4 1 。它是在一个特定的领域中的一组相互协作的类,它定义了应用的 架构。框架规定了应用系统的总体结构,定义了类和对象的划分和其关键责任、类和 对象如何合作、控制线索等。框架预先定义这些设计参数,使应用系统的设计者执行 者能把力量集中在应用系统的细节上。 2 第一章绪论 实际上,软件系统发展到现在已经很复杂了,特别是服务器端软件,涉及到的知 识、问题太多。在某些方面使用别人的已经成熟的框架,就相当于一些基础工作让别 人来帮我们完成,而我们只需要集中精力完成系统的业务逻辑设计。而且框架一般是 成熟、稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控 制等问题。还有框架一般都经过很多人反复使用,所以结构很好,扩展性也很好,并 且它是不断升级的,我们可以直接享用别人升级代码带来的一系列好处。框架一般处 在低层应用平台( 如j 2 e e ) 和高层业务逻辑之间的中间层。 1 1 4w e b 框架的优势 传统的开发模式已经不能满足大型w e b 应用系统的开发需求。w e b 应用框架可以 提高w e b 应用系统开发的效率,使得人们有效的借鉴以往的系统开发经验,迅速地解 决系统开发所存在的问题,提高系统开发质量和速度。这样w e b 应用系统开发者可以 集中精力开发系统所需的商业逻辑,而不需要把大量精力耗费在一些w e b 应用系统相 同的操作上。 , ( 1 ) w e b 应用框架为w e b 应用系统提供了良好的软件体系结构 w e b 应用框架一般采用w e b 应用领域中已在实践中反复检验、经过多数的专家认 同的软件体系结构进行设计、实现,因此,可以为多数w e b 应用提供可复用的软件体 系结构。 ( 2 ) w e b 应用框架为w e b 应用系统的开发提供了更强的项目管理 w e b 应用框架一般采用模块化、层次化设计,并为各模块、各层的交互提供了统 一的接口,可以支持w e b 应用按角色进行并行开发,从而为w e b 应用项目的管理提供 了更好的支持。 ( 3 ) w e b 应用框架为w e b 应用系统的开发提供了技术和经验的积累 w e b 应用框架的设计和实现一般都由在w e b 应用领域具有丰富经验的开发者完 成。w e b 应用框架的开发考虑到了多数具有通用性的问题,并给出了解决方案,同 时,w e b 应用框架也为w e b 应用的开发提供了多种组件支持,从而为w e b 应用的丌发 提供了技术和经验的积累。 ( 4 ) w e b 应用框架为w e b 应用系统的开发提供了可复用的基础服务集合 w e b 应用框架特定于w e b 应用领域,w e b 应用框架的设计和实现一般建立在对大 量w e b 应用系统的共同行为的分析之上,并在此基础上为w e b 应用提供了大量的基础 服务,如请求分派、调用商业逻辑和选择组装视图等。 人连交通人学t 学硕十学何论文 ( 5 ) w e b 开发框架的应用在很大程度上提高了w e b 应用系统的开发效率和系统质量 目前已有大量基于j a v a 技术的开发框架,如s r t u t s 、t u r b i n e 、s p r i n g m v c , w e b w o r k 、t a p e s t r y 、j s f 、e a s y j w e b 、h i b e n a t e 等。这些开发框架本身使用了一些优 秀的软件设计思想,开发人员在框架提供的平台基础上进行开发也间接复用了以往成 功的设计经验,实现了较为合理的分层设计。 因此,利用w e b 应用框架可以解决传统的w e b 应用开发中所面临的诸多问题, w e b 应用框架开发w e b 应用系统的方式必将成为开发w e b 应用系统的一种新的可复用 的开发方式。 1 2 本文的研究内容 ( 1 ) 对现有的设计模式进行介绍和分析; ( 2 ) 对o b e r s e v e r 和s t r a t e g y 模式进行缺陷分析并且给予改进; ( 3 ) 用x s l 技术改进s t r u t s 框架,然后基于改进后的s t r u t s 框架进行网上购物系统设 计,并在业务层的设计中应用已有和改进的设计模式。 1 3 论文组织结构 本论文共分为六章,各章的主要内容如下: 第一章:首先介绍了研究的背景,设计模式的概念和国内外研究的现状,其次介 绍了什么是框架和w e b 框架的优势,最后介绍了论文的主要研究内容以及组织结构。 第二章:介绍设计模式的起源以及相关概念,设计模式的分类,使用设计模式的 目的和意义。分析面向对象设计的基本原则,说明设计模式与软件框架的关系。 第三章:主要对几种典型的设计模式进行了介绍和分析。 第四章:针对o b s e r v e r 和s t r a t e g y 设计模式进行了分析并且对于两个模式的缺陷给 予了改进。 第五章:介绍s t r u t s 框架技术,用x s l 技术改进s t r u t s 框架为s t r u t s x 框架,在网 上购物系统中应用s t r u t s x 框架,并将几种已有和改进的设计模式应用到了系统的业务 层设计中。 第六章:本章对本文所作的工作进行了总结,指出尚存在的问题与不足,对以后 本人的工作进行展望。 4 第二章设计模式理论的研究 第二章设计模式理论的研究 2 1 设计模式的起源 模式的研究起源于建筑工程设计大师c h r i s t o p h e ra l e x a n d e r 的关于城市规划和建筑 设计的著作,他曾在其著作中指出:“每一种模式描述了一个在我们周围不断重复发生 的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案,而不 必重复劳动。 该定义的核心在于提供一个相关问题的解决方案,使人们避免不必要的 重复劳动。尽管他的著作是针对城市规划和建筑设计的,但是作者的观点实际上适用于 所有的工程设计领域,包括软件开发设计领域。 设计模式在软件设计行业中的起源可以追溯到1 9 8 7 年。那时,w a r dc u n n i n g h r i t i 和k e n tb e c k 在一起用s m a l l t a l k 做设计用户界面的工作。他们决定使用a l e x a n d e r 的理 论发展楚一个有五个模式的语言来指导s a m l l t a l k 的新手,因此他们写成了一篇“u s i n g p a a e ml a n g u a g e sf o ro b j e c t o r i e n t e dp r o g r a m s ( 使用模式语言做面向对象的程序) ”的论 文f 发表于o o p s l a 8 7i no r l a n d o ) 1 5 1 。 在那以后不久,j i mc o p l i e n 开始搜集c + + 语言的成例( i d i o m s ) 。成例是模式的一种, 这些c + + 成例发表在1 9 9 1 年出版的( ( a d v a n c e dc + + p r o g r a m m i n gs t y l e sa n di d i o m s ( 高级 c + + 编程风格和成例) 一书中。 从1 9 9 0 年到l9 9 2 年,“四人组”的成员开始他们搜集模式的工作。关于模式的讨 论和工作回忆则一再举行。 在1 9 9 3 年8 月,k e n tb e c k 和g r a d yb o o c h 主持了在科罗拉多的山区度假村召丌的 第一次关于模式的会议,模式研究的主要人物都参加了这次会议,包括j i mc o p l i e n ,d o u g l e a , d e s m o n dd s o u z e ,n o r mk e r t h ,w o l f g a n gp r e e 等。 在那以后不久, “四人组”的( ( d e s i g np a t t e r n s ) ) 一书就发表了。 此书发表之后,参加模式研究的人数呈爆炸性增长,被确定为模式结构的数目也呈 爆炸性增长。编程模式语言大会( p a t t e r nl a n g u a g e so fp r o g r a m m i n g ,或者p l o p ) 每年一次 定期在美国举行,大会的论文也汇编成书。 模式也不断地被应用到软件工程的各个方面。在诸如开发组织、软件处理、项目配 置管理等方面,都可以看到模式的影子,但至今得到了最深研究的仍是设计模式和代码 模式【5 】o 大连交通大学t 学硕十学位论文 2 2 设计模式的相关概述 2 2 1 设计模式的概念 c h r i s t o p h e ra l e x a n d e r 在他的著作ap a t t e r nl a n g u a g e ) ) 中指出, “简而言之,模 式并非孤立体。每个模式只有在其它模式的支持下才能实际存在;嵌入到更大的模式中; 被同样规模的模式包围;嵌入比自身更小的模式i l j 。” 模式是一种方案,利用这种方案,我们可以完成某项工作;模式也是一种途径,通 过这种途径,我们可以达到某个目的。设计模式也是一种模式,是一种完成某个目的或 构思的方案。它要求使用某种面向对象提供的类及相关机制【6 j 。 设计模式可以使设计人员可以更加有效地复用成功的设计和体系结构。新系统开发 者使用已经被证实的设计模式会更加容易理解其设计思路。设计模式帮助你做出有利于 系统复用的选择,避免设计损害了系统设计的复用性。总而言之,设计模式可以帮助设 计者更快更有效地完成系统设计。 2 2 2 设计模式的基本要素 一般而言,一个模式有四个基本要素l l 7 】: ( 1 ) 模式名称( p a t t e r nn a m e ) :一个助记名,它用一两个词来描述模式的问题、解决 方案和效果。命名一个新的模式增加了我们的设计词汇。设计模式允许我们在较高的抽 象层次上进行设计。基于一个模式词汇表,我们自己以及同事之间就可以讨论模式并在 编写文档时使用它们。模式名可以帮助我们思考,便于我们与其他人交流设计思想及设 计结果。找到恰当的模式名也是我们设计模式编目工作的难点之一。 ( 2 ) i 口- j 题( p r o b l e m ) :描述了应该在何时使用模式。它解释了设计问题和问题存在的前 因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等。也可能描述了导致 不灵活设计的类或对象结构。有时候,问题部分会包括使用模式必须满足的一系列先决 条件。 ( 3 ) 解决方案( s o l u t i o n ) :描述了设计的组成成分,它们之间的相互关系及各自的职责 和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述 一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意 义的元素组合( 类或对象组合) 来解决这个问题。 ( 4 ) 效果( c o n s e q u e n c e s ) :描述了模式应用的效果及使用模式应权衡的问题。尽管我 们描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的 代价及好处具有重要意义。软件效果大多关注对时间和空间的衡量,它们也表述了语言 6 第二章设计模式理论的研究 和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活 性、扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮助。 2 2 3 设计模式的描述形式 从不同的角度分析设计模式,就有不同的描述方法。图形符号,如u m l 可以将设 计结果简单记录为类和对象之间的关系,但这远远不够。为了达到设计重用,还须记录 设计方案产生的决定过程、选择过程和权衡过程,以及具体的例子【l 】。( ( d e s i g np a t t e r n s ) ) 中提供的模式描述模板,模版具有统一的信息描述结构,它从1 4 个方面对设计模式分 别进行了描述,这样有利于设计人员有效学习、使用和比较设计模式【1 ,7 ,8 ,9 1 。 ( 1 ) 模式名和分类:模式名简洁地描述模式的本质。一个好的名字非常重要,因为它 将成为你的设计词汇表中的一部分。 ( 2 ) 意图:回答了设计模式的用途、基本原理和解决什么特定设计问题。 ( 3 ) 另l j 名:模式的其他名称。 ( 4 ) 动机:用以说明一个设计问题以及如何用模式中的类、对象来解决问题的特定情 景。该情景有助于对随后对模式更抽象的描述。 ( 5 ) 适用性:说明什么情况下使用该设计模式,该模式可用来改进哪些不良设计及如 何识别这些情况。 ( 6 ) 结构:采用基于对象建模技术( o m t ) 的表示法对模式中的类进行图形描述。 ( 7 ) 参与者:设计模式中的类和或对象以及它们的各自职责。 ( 8 ) 协作:模式的参与者怎样协作以实现它们的职责。 ( 9 ) 效果:模式怎样支持它的目标,使用模式的效果和所需要做的权衡取舍,系统结 构的哪些方面可以独立改变。 ( 1 0 ) 实现:实现模式时需要知道的一些提示、技术要点及应避免的缺陷,以及是否 存在某些特定于实现语言的问题。 ( 1 1 ) 代码示例:用来说明怎样用编程语言如c + + 或s m a l l t a l k 来实现该模式的代码片 断。 ( 1 2 ) 已知应用:实际系统中发现模式的例子。每个模式至少包含了两个不同领域的 实例。 ( 1 3 ) 相关模式:与这个模式紧密相关的模式有哪些,其间重要的不同之处,这个模 式应于哪些其他模式一起使用。 大连交通大学丁学硕+ 学位论文 2 2 4 设计模式的分类 我们希望将众多的设计模式组织起来加以分类,分类有助于设计人员更好的理解设 计模式,并且也对发现新的设计模式有很好的指导作用。我们可以根据两个准则对模式 分类【1 】: 第一种是目的准则,也就是模式是用来做什么的。可以分为创建型( c r e a t i o n a l ) 、结 构型( s t r u c t u r a l ) 、行为型( b e h a v i o r a l ) 。创建型模式与对象的创建有关;结构型模式处理 类或对象的组合;行为型模式对类或对象怎样交互和怎样分配职责进行描述。 第二是范围准则,指定模式主要是用于类还是用于对象。类模式处理类和子类之间 的关系,这些关系通过继承建立,是静态的,在编译的时候便确定下来了。对象模式处 理对象间的关系,这些关系在运行时刻是可以变化的,更具有动态性。几乎所有模式都 使用继承机制,所以“类模式”只指那些集中于处理类间关系的模式,而大部分模式都 属于对象模式的范畴。 创建型类模式将对象的部分创建工作延迟到子类,而创建型对象模式则将它延迟到 另一个对象中。结构型类模式使用继承机制来组合类,而结构型对象模式则描述了对象 的组装方式。行为型式使用继承描述算法和控制流,而行为型对象模式则描述一组对象 怎样协作完成单个对象所无法完成的任务。 2 2 5 设计模式的选择和使用 在众多设计模式中选择一个针对特定问题的设计模式是很不容易的,如果面对的是 我们不熟悉的一组新的设计模式,使用就更为困难。为了使我们发现解决当前问题最适 合的设计模式,有以下几种模式选择方法: ( 1 ) 浏览设计模式是怎样解决设计问题的,这样可以缩小选择的范围; ( 2 ) 浏览模式的意图部分,通读每个模式的意图,找出和你的问题相关的模式: ( 3 ) 研究模式怎样互相关联,可以利用这种关系使我们获得合适的模式或模式组; ( 4 ) 研究目的相似的模式。洞察具有相似目的的模式之间的共同点和不同点; ( 5 ) 检查重新设计的原因,然后再找出哪些模式可以帮助我们避免这些会导致重新设 计的因素; ( 6 ) 考虑设计中哪些是可变的,这个方法与前一个方法刚好相反。他不是考虑什么会 使你的设计改变,而是考虑你想要什么变化却又不会引起重新设计。最主要的一点是封 装变化的概念,这是许多设计模式的主题。 8 第二章设计模式理论的研究 设计模式一般应用于以下2 个方面i l o 】:在软件系统设计的开始阶段就应用设计模 式对软件体系结构进行设计;在系统的体系结构设计初步完成后,通过对系统另有要 求的组件或模块应用设计模式进行重构使其更加优化、灵活。 下面给出一个有效的应用设计模式的步骤: ( 1 ) 认真分析所选择的模式,特别注意其适用性条件和使用效果,确定它适用于当前 要解决的问题。 ( 2 ) 研究结构、参与者和协作部分,确保设计人员理解这个模式的类和对象以及它们 是怎样关联的。 ( 3 ) 分析代码示例部分,看看这个模式代码形式的具体例子,这样将有助于学习模式 的实现。 ( 4 ) 选择模式参与者的名字,使它们再应用上下文中有意义,设计模式参与者的名字 通常过于抽象而不会直接出现再应用中。将参与者的名字和应用中出现的名字合并起来 是很有用的。 ( 5 ) 定义接1 5 1 、构件、类及类间的关系。 ( 6 ) 定义模式中专用于应用的操作名称,这里再一次说明,名字一般依赖于应用。名 字约定要一致。 ( 7 ) 实现执行模式中责任和协作的操作,实现部分提供线索指导你进行实现。代码示 例部分的例子也能提供帮助。 设计模式不能随意的使用,如果设计人员通过引入额外的间接层次获得灵活性和可 变性的同时,也会使设计复杂化或者是牺牲了一部分的性能。所以说,设计模式真正需 要其获得灵活性和可变性时,才有必要使用,这就是设计模式的使用限制。设计模式的 效果部分能体现出一个设计模式使用的是否得当。 2 2 6 使用设计模式的最终目的 如果要深入的研究一种设计模式,在某些西方国家里,是将整个体系结构划分为几 块,每块有细致而独立的描述与要求。他们将会把整个系统划分到不能再划分的最小粒 度。在对设计模式的研究过程中,要做到十分精确,不可以有半点模糊的概念。不过, 对于我们中国的软件设计人员而言,就不要求特别的精确,可能在设计模式的某些部分 有些模糊的概念,但是这并不会影响到我们成功的运用设计模式。这也就是中国古典智 慧带给我们的好处。道家的思想讲究清静无为,一切可以寓有于无。可以这样说,当我 们可以熟练的运用设计模式之后,即学会并深刻理解了设计模式所蕴涵的设计思想以 后,在实际开发的过程中,也就不需要再拘泥于具体的设计模式,而可以将其灵活运用 9 大连交通大学t 学硕十学位论文 在系统之中,并且可以很自然、流畅的将各种不同类型的设计模式加以组合运用而不会 有任何陌生的感觉。这也正如设计模式的鼻祖c h r i s t o p h e ra l e x a n d e r 在建筑的永恒之 道中说过的一样】: “只要你盲从、机械地使用模式,他们就和任何其他的意向一样将干扰你的现实感。 只有你恰当地漠视它们,你才会恰当地使用它们【1 2 1 。 “只有你能充分摆脱那种帮助你的模式之时,你才能建造一个富有活力的建筑。你 所听到的是多么的矛盾l l 引。 “最终,只有当一个使用语言的人无我自在之时,建筑才成为有生气的。只有那时 他才能认识到真实存在的作用力,而不被意向吓倒i l2 1 。 “但在那时刻,他不再需要( 模式) 语言了。一旦一个人自由到这样一种程度,他能 够看到真实存在的作用力,并建造一个单纯由作用力塑造的建筑,而不背起一项所影响 或干扰,那么他就能足够自由地建造,而完全不用( 模式) 语言一因为模式包含的认识, 作用力真正作用的方式的认识是他的【1 2 】。” “在这最后阶段,模式不再重要:模式已教你有能力接受真实的东西【1 2 】。 2 2 7 为什么要使用设计模式 ( 1 ) 设计模式是经过证实的( p r o v e n ) :设计模式反映了开发者的经验、知识和洞察力, 开发者曾成功地使用过这些设计模式。 ( 2 ) 设计模式是可复用的( r e u s a b l e ) :设计模式提供了一个现成的( r e a d y m a d e ) 解决方 案,可根据需要适应不同的问题,可帮助设计者更快更好地完成系统设计;同时,设计 模式帮助系统设计者做出有利于系统复用的选择,避免设计损害了系统的复用性。 ( 3 ) 设计模式是有表现力的( e x p r e s s i v e ) :设计模式提供了一个公共的( c o m m o n ) 解决方 案的词汇表( v o c a b u l a r y ) ,可用来简洁地表达大的解决方案,也会使新的系统开发者更加 容易理解其设计思路。 ( 4 ) 在面向对象的编程中,软件编程人员更加注重以往代码的重用性和可维护性。通 过提供一个类和对象之间的作用关系以及它们之间潜在联系的说明规范,设计模式甚至 能够提高已有系统的文档管理和系统维护的有效性i l 。 需要指出的是,设计模式并不保证成功。一个设计模式的描述表明该模式什么时候 是可适用的,但是只有经验的积累才能更好地确保何时一个特定的设计模式能够改良一 个设计。 1 0 第二章设计模式理论的研究 2 3 面向对象的设计原则 面向对象的设计要解决的核心问题是怎样提高软件的可维护性( m a i n t a i n a b i l i t y ) 和 可复用。i 生( r e u s e a b i l i t y ) 。一个软件设计的可维护性差的原因,也就是说软件系统的性能 要求会不断的变化,这种变化会导致系统“腐烂的真正原因有四个【l3 ,h 】:过于僵硬 ( r i g i d i t y ) ,过于脆弱( f r a g i l i t y ) ,复用率 f 氐( i m m o b i l i t y ) ,豁度过高( v i s c o s i t y ) 。 ( 1 ) 过于僵硬:很难在一个软件系统罩加入一个新的性能,哪怕是很小的都很难。 ( 2 ) 过于脆弱:与软件过于僵硬同时存在着,对软件系统的一个地方修改代码时,往 往会导致看上去没什么关系的另一个地方发生故障。 ( 3 ) 复用率低:所谓复用,就是指一个软件的组成部分,可以在同一个项目的不同地 方甚至另一个项目中重复使用。当程序员发现一段代码、函数、模块所作的事情是可以 在新的模块、新系统中使用的时候,他们总是发现已有的代码依赖于一大堆其他的东西, 导致他们不得不重新写自己的代码,这样的系统将有复用率低的问题。 ( 4 ) 黏度过高:有的时候,一个改动可以以保存原始设计意图和原始设计框架的方式 进行,也可以以破坏原始意图和框架的方式进行。第一种是对长期有利,而第二种是解 决短期的问题,如果一个系统设计总是使得第二种方法比第一种方法容易,就叫黏度过 高。 根据p e t e rc o a d 所说的,一个好的系统设计应该具有可扩展性( e x t e n s i b i l i t y ) 、灵活 性( f l e x i b i l i t y ) 以及可插入性( p l u g g a b i l i t y ) 的目标1 1 3 ,1 5 j 。 ( 1 ) 可扩展性:新的功能很容易加入到系统中去,也就是m a r t i n 说的过于僵硬的反 面。 ( 2 ) 灵活性:可以允许代码修改平稳的发生,而不会波及到很多其他的模块,是r o b e r t c m a r t i n 所说的过于脆弱的反面。 ( 3 ) 可插入性:可以很容易的将一个类抽出去,同时将另一个有同样接口的类加入进 来,也就是是r o b e r tc m a r t i n 所说的黏度过高的反面。 软件设计人员学习使用设计模式可以改善系统的设计,并且更深入理解面向对象的 设计理念。设计模式并没有一个普遍的设计指导原则,但是这些设计模式中隐含着一些 更为深层的、更具有普遍性的、共同的思想原则。也就是面向对象的设计原则。在没有 现成设计模式的时候,设计人员可以使用这些设计原则,它同样对系统设计有指导作用。 本文主要以下几种设计原则进行介绍和分析:开闭原则,l i s k o v 代换原则,依赖倒转原 则,接口隔离原则,组合聚合复用原则,迪米特法则。 大连交通大学t 学硕十学位论文 2 3 1 开闭原则( o c p ) b e r t

温馨提示

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

评论

0/150

提交评论