设计模式和重构的研究与应用.pdf
《设计模式和重构的研究与应用.pdf》由会员分享,可在线阅读,更多相关《设计模式和重构的研究与应用.pdf(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、北京邮电大学硕士学位论文设计模式和重构的研究与应用姓名:韩菲申请学位级别:硕士专业:计算机应用指导教师:上官右黎20060309北京邮电大学硕士论文设计模式和重构的研究与应用设计模式和重构的研究与应用摘要当今的软件开发多数是在已有的一些工作基础上进行的,对软件可维护性和可复用性的要求越来越高。同时,软件维护工作在软件生命周期中占的比例也越来越大。为了提高软件的可维护性和可复用性,在系统设计的过程中,要充分参照现有的设计模式,使系统可以有一个良好的设计。同时,在系统的开发与维护过程中,要积极对软件的代码进行重构,改进系统的设计。设计模式,被用于描述特定场景下解决一般设计问题的类和相互通信的对象。
2、每个设计模式描述了各自的应用领域和基本原则。设计模式提供了设计级的复用性和灵活性i 使轶件对需求曼f 缘撒感度降低。重构,其目的是在不改变软件的外在行为的前提下调整软件内部结构。尽管表面上重构是代码的一种整理,实际上却是对代码中蕴含的设计的调整。在某种意义上,设计模式作为重构的目标指导重构的进行。本文首先对命令、原型和单件等九种设计模式进行研究,分析总结了这些模式在虚拟实验系统中的应用。然后对重构的原则、特征和方法等进行研究,最后分析总结了部分重构方法在虚拟实验系统中的应用。关键词设计模式重构虚拟实验系统北京邮电大学硕士论文设计模式和重构的研究与应用R E S E A R C HA N DA
3、P P L I C A T l 0 NO FD E S I G NP A T T E R N SA N DR E F A C T O R I N GA B S T R A C TN o w a d a y s,m o s to fs o f t w a r ei sd e v e l o p e do u to nt h eb a s i so fs o m ee x i s t i n gw o r k T h es o f t w a r ei ss u p p o s e dt ob em o r ea n dm o r em a i n t a i n a b l ea n dr e
4、u s a b l e M e a n w h i l e,t h em a i n t a i n i n go ft h es o f t w a r eh a so c c u p i e dm o r ea n dm o r ew e i g h ti nt h ew h o l es o f t w a r el i f ec y c l e I no r d e rt oi m p r o v et h es o f t w a r em a i n t a i n a b i l i t ya n dr e u s a b i l i t y,m a k eS u r er e
5、f e rt ot h ee x i s t i n ga e s i g np a t t e r n si 1 1t h ec o u r s eo fs y s t e md e s i g nS Oa st om a k eag o o dd e s i g no ft h es y s t e m M e a n w h i l e,m a k es u r er e f a c t o rt h es 0 1 a r ec o d ea c t i v e l yS Oa st oi m p r o v et h es y s t e md e s i g n D e s i g
6、np a t t e r n sa r et od e s c r i b et h o s ec l a s s e sa n do b j e c t st h a ta r eu s e dt os o l v es o m eg e n e r a ld e s i g np r o b l e m si nt h eg i v e ns c e n e s E a c hd e s i g np a t t e r nh a sd e s c r i b e di t sa p p l i c a t i o nf i e l da n db a s i cp r i n c i p
7、 l e D e s i g np a t t e r n ss u p p l yt h er e u s a b i l i t ya n df l e x i b i l i t yi nt h ed e s i g nl e v e l,a n dm a k et h es o f t w a r el e s ss e n s i t i v et ot h ec h a n g e so fr e q u i r e m e n t R e f a c t o r i n gi sa i m e dt om o d i f yt h ei n t e m a ls t r u c
8、t u r eo fs o f t w a r ew i t h o u tc h a n g i n gi t so b s e r v a b l eb e h a v i o r R e f a c t o r i n gl i k e st h em o d i f i c a t i o no ft h ec o d eo nt h es u r f a c e H o w e v e r,i tm o d i f i e st h eu n d e r l y i n gd e s i g no ft h ec o d ea c t u a l l y I nas e n s e,
9、d e s i g np a t t e m sg u i d et h er e f a c t o r i n ga si t so b j e c t i v e H e r e,f i r s tn i n ed e s i g np a t t e r n s(s u c ha sc o m m a n d,p r o t o t y p e,s i n g l e t o np a t t e ma n dS Oo n)a r er e s e a r c h e d,a n da p p l i c a t i o n so ft h e s ed e s i g np a t
10、t e r n sa r ea n a l y z e da n ds u m m e du pi nt h ev i r t u a le x p e r i m e n ts y s t e m S e c o n dp r i n c i p l e s,c h a r a c t e r i s t i c sa n dm e t h o d so fr e f a c t o r i n ga r er e s e a r c h e d F i n a l l ya p p l i c a t i o n so ft h e s er e f a c t o r i n gm e
11、t h o d sa r ea n a l y z e da n ds u m m e du pi nt h ev i r t u a le x p e r i m e n ts y s t e m K E YW O R D Sd e s i g np a t t e r n,r e f a c t o r i n g,v i r t u a le x p e r i m e n ts y s t e m北京邮电大学硕士_ 珞文设计模式和重掏的研究与应用独创性(或创新性)声明本人声明所呈交的论文是率人在导师指导下进行的研究工作及取得的研究成果。尽我所知,豫了文中特别加以标注和致谢中所罗列的内容
12、以外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。申请学位论文与资料若有不实之处,本人承担一切相关责任。本人签名:重拄j 巨日期:!:i:三2关于沦文使用授权的说明学位论文作者完全了解北京邮电大学有关保留和使用学位论文的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属北京邮电大学。学校有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许学位论文被查阅和借阅:学校可以公布学位论文的全部或部分内容,可以允许采用影印、缩印甍其它复制手段保
13、存、汇编学位论文。(保密的学位论文在解密启遵守此规定)保密论文注释:本学位论文属于傈密在一年解密后适用本授权书。非保密论文注释:本学位论义不属于保密范围,适用本授权书。本人签名:纽j 坠日期导师签名:丝毫壶经目期三!:圭:!地6。3;兰!北京邮电大学硕士论文设计模式和重构的研究与应用1 1 问题的提出第一章绪论当今的软件开发多数是在已有的一些工作基础上进行的,对软件可维护性和可复用性的要求越来越高。同时,软件维护工作在软件生命周期中占的比例也越来越大。软件的可维护性是指软件能够修改和升级的容易程度;软件的可复用性是指软件或软件系统在不修改或者仅做少量修改的情况下可以被新的软件系统所利用的能力。
14、在一个软件的生命周期中,需求不可能是一成不变的,而且总是会变化的。当需求变化时,对于可维护性差的软件,会存在系统维护困难的问题。往往很难在其中加入一个新的功能,因为加入一个新功能,不仅意味着要建造一个新的独立模块,而且这个新模块可能会波及到其它很多的模块,从而导致其它模块也要作一定的修改。于是,程序员不敢轻易向系统中加入新的功能,从而造成一个软件系统一旦做好,就不能增加新功能的过于僵硬的问题。软件的若干组成部分,通常可以在同一个项目的不同地方甚至另一个项目中重复使用。对于可复用性差的软件,每当程序员发现某段代码、某个函数或者某个模块所做的事情可以在新的模块或者新的系统中使用时,也许就会发现这些
15、已有的代码依赖于一大堆其它的东西,以至于很难将它们分开。:对于上述问题,可以通过以下两种途径来解决:在系统设计的过程中,要充分参照现有的设计模式,使系统可以有一个良好的设计。在系统的开发与维护过程中,要培养重构的习惯,积极对软件的代码进行重构,改进系统的设计。如若不然,系统将逐渐失去自己的结构。同时,值得一提的是,很多时候,设计模式可用来指导重构的进行。1 2 设计模式1 2 1设计模式的背景软件复用是解决软件危机根本途径之一,面向对象技术的普遍应用使软件的可复用性有了很大的提高。然而,随着软件的日益复杂和庞大,人们对软件可复用性的要求越来越高,他们希望所使用的软件不仅能满足当前的功能需求,而
16、且北京邮电大学硕士论文设计模式和重构的研究与应用还要有足够的灵活性以适应将来的变化。而设计模式为我们提供了一条捷径,它帮助人们做出有利于系统复用的选择,帮助设计人员复用已成功实现的系统的概念模型,以过去成功的开发经验指导当前的软件开发,大大提高了软件开发的效率和质量。模式的概念最早是由一位叫C h r i s t o p h e r A l e x a n d e r 的建筑师提出来的,他着眼于研究建筑物的通用结构,试图找到一种结构化的、可复用的方法,以便在图纸上捕捉到伟大的建筑物的基本要素。他说:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次
17、又一次地使用该方案而不必做重复劳动。一般而言,一个模式有四个基本要素:模式名称(p a t t e r nn a m e):一个助记名,它用一两个词来描述模式的问题、解决方案和效果。问题(p r o b l e m)描述了应该在何时使用模式。解决方案(s o l u t i o n):描述了如何解决问题。解决方案并不描述一个特定而具体的实现,而是提供问题的抽象描述和怎样用一个具有一般意义的元素组合来解决这个问题。效果(c o n s e q u e n c e s):描述了模式应用的效果及使用模式应权衡的问题。模式的效果包括它对系统的灵活性、扩充性或可移植性的影响。同时,模式被分成三种类型:体
18、系结构模式(a r c h i t e c t u r a lp a t t e r n):表示软件系统的基本结构化组织图式。它提供一套预定义的子系统,规定它们的职责,并包含于组织它们之间关系的规贝0 和指南。设计模式(d e s i g np a t t e r n):提供了一个用于细化软件系统的子系统或组件,或它们之间关系的图式。与设计模式相关的,还有一种模式称为反模式。设计模式经常会转变为反模式。其区别仅在于问题所处的环境。反模式是在不合适的环境下应用了设计模式,它侧重于提醒人们如何避开错误的设计思维和软件编写。惯用法(i d i o m):具体针对一种编程语言的底层模式。惯用法描述如何
19、使用给定语言的特征来实现组件的特殊方面或它们之间的关系。1 2 2设计模式的定义设计模式,被用于描述特定场景下解决一般设计问题的类和相互通信的对象。根据其目的,设计模式可分为三类:创建型模式抽象了实例化过程,帮助一个系统独立于如何创建、组合和表示它的那些对2北京邮电大学硕士论文设计模式和重构的研究与应用象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。结构型模式处理类或对象的组合。结构型类模式采用继承机制来组合接口或实现,而结构型对象模式描述了如何对一些对象进行组合,从而实现新功能的一些方法。行为型模式对类或对象怎样交互和怎样分配职责进行描述。行为模式
20、不仅描述对象或类的模式,还描述它们之间的通信模式。行为类模式使用继承机制在类间分派行为,而行为对象模式使用对象复合。常见的设计模式有如下几种:A b s t r a c tF a c t o r y(抽象工厂):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。A d a p t e r(适配器):将一个类的接1 2 1 转换成客户希望的另外一个接1 3。它使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。B r i d g e(桥接_):蒋抽孙分与它葡实现部分分离,使它们郡可以独立地变化。B u i l d e r(生成器):将一个复杂对象的构建与它的表示分离,使得
21、同样的构建过程可以创建不同的表示。C h a i no f R e s p o n s i b i l i t y(职责链):为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。C o m m a n d(命令):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可取消的操作。C o m p o s i t e(组成):将对象组合成树形结构以表示“部分整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。D e c o r a t o r(装饰):
22、动态地给一个对象添加一些额外的职责。F a c a d e(外观):为子系统中的一组接口提供一个一致的界面,它定义了一个高层接口,这个接口使得这一子系统更加容易使用。F a c t o r yM e t h o d(工厂方法):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。它使一个类的实例化延迟到其子类。F l y w e i g h t(享元):运用共享技术有效地支持大量细粒度的对象。I n t e r p r e t e r(解释器):给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。I t e r a t o r(迭代器):提供一种方
23、法顺序访问一个聚合对象中各个元素,而又北京邮电大学硕士论文设计模式和重构的研究与应用不需暴露该对象的内部表示。M e d i a t o r(中介者):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。M e m e n t o(备忘录):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。O b s e r v e r(观察者):定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。P r o t o t
24、 y p e(原型):用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。P r o x y(代理):为其他对象提供一个代理以控制对这个对象的访问。S i n g l e t o n(单件):保证一个类仅有一个实例,并提供一个访问它的全局访问点。S t a t e(状态);允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。S t r a t e g y(策略):定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。T e m p l a t eM e t h o d(模板方法):定义一个操作中的算法的骨架
25、,而将一些步骤延迟到子类中。T e m p l a t eM e t h o d 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。V i s i t o r(访问者):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。其中,A b s t r a c tF a c t o r y、B u i l d e r、F a c t o r yM e t h o d、P r o t o t y p e 和S i n g l e t o n 模式属于创建型模式;A d a p t e r、B r i d g e、C o m p o s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 模式 研究 应用
限制150内