软件设计模式的选择与使用论文.docx

上传人:b****2 文档编号:24566382 上传时间:2023-05-28 格式:DOCX 页数:11 大小:123.11KB
下载 相关 举报
软件设计模式的选择与使用论文.docx_第1页
第1页 / 共11页
软件设计模式的选择与使用论文.docx_第2页
第2页 / 共11页
软件设计模式的选择与使用论文.docx_第3页
第3页 / 共11页
软件设计模式的选择与使用论文.docx_第4页
第4页 / 共11页
软件设计模式的选择与使用论文.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

软件设计模式的选择与使用论文.docx

《软件设计模式的选择与使用论文.docx》由会员分享,可在线阅读,更多相关《软件设计模式的选择与使用论文.docx(11页珍藏版)》请在冰豆网上搜索。

软件设计模式的选择与使用论文.docx

软件设计模式的选择与使用论文

 

软件学院

《设计模式》论文

课程名称:

软件设计模式的选择与使用

专业:

软件工程

班级:

Java102

学号:

201007092203

学生姓名:

赵燕

指导老师:

李勇军

 

2013年6月23日

目录

摘要3

第1章设计模式概述5

1.1设计模式概述5

1.2四个基本要素5

第2章软件模式分类6

2.1 创建型设计模式6

2.2 结构型设计模式6

2.3 行为型设计模式7

2.4 各种模式之间的关系8

第3章设计模式的选择与实现9

第4章设计模式应用举例10

第5章总结11

参考文献12

软件设计模式的选择与使用

摘要

设计模式是人们在实践过程中总结出来的成功设计范例,它的正确选择和使用是发挥模式作用的关键。

有效地使用设计模式,可以极大的帮助我们克服在软件开发过程中所面临的种种困难。

本文介绍了以面向对象技术为基础的软件设计模式的基本概念及分类,描述了各种设计模式之间的关系,讨论了使用设计模式的正确方法,并结合实例,介绍了多种设计模式在教学信息平台实例开发中的具体应用。

关键词:

设计模式;面向对象;模式使用;教学信息平台

Abstract

Efficientlyusingofdesignpatternscangreatlyhelpusovercomethedifficultiesfacedintheprocessofsoftwaredevelopment.

Designpatternsaresuccessfuldesignexampleswhichpeoplesummarizedinpractice.Howtocorrectlyselectandusethesepatternsisimportanttobringthemintoplay.

Thepaperintroducesthebasicconceptionandclassificationofsoftwaredesignpattern,onthebasisofobjectorientedtechnology,systematicallydescribestherelationamongdesignpatterns,discussesthecorrectmethodofusingdesignpattern,andgivesanintroductionofmanykindsofdesignpatternsinthespecificapplicationofdevelopingteachinginformationplatformbyusingexamples.

Keywords:

 designpattern;objectoriented;patternusing;teachinginformationplatform

第1章

设计模式概述

1.1设计模式概述

设计模式的概念最早来源于建筑学,由建筑师Alexander提出来的,它是记录、提炼存在于软件开发人员头脑中或文档中的一些反复出现的共性问题及其经过多次验证的成功解决,它表达了在特定上下文情形下产生的、反复出现的典型性问题以及相应的一整套解决方案之间的关系。

设计模式关注的是特定设计问题及其解决方案,它描述了如何利用面向对象的基本概念和机制来解决可扩展的软件设计中经常出现的问题,并针对设计问题给出可复用的解决方案,而这个解决方案是对反复出现的设计结构进行识别和抽象得到的。

1.2四个基本要素

一般而言,一个模式有四个基本要素:

(1)模式名称(patternname)

每个模式都有唯一的名称,用于简述模式的本质。

人们通过模式名称来鉴别模式;

(2)问题(problem)

描述了应该在何时使用模式。

它解释了设计问题和问题存在的前因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等。

也可能描述了导致不灵活设计的类或对象结构。

有时候,问题部分会包括使用模式必须满足的一系列先决条件。

(3)解决方案(solution)

描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。

(4)效果(consequences)

描述了模式应用的效果及使用模式应权衡的问题。

尽管我们描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义。

软件效果大多关注对时间和空间的衡量,因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活性、扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮助。

第2章

软件模式分类

软件设计模式的分类有不同的方法。

根据模式是用来完成什么工作的不同,可将设计模式分为创建型模式、结构型模式、行为型模式三种。

根据模式是用于类还是用于对象,可将其分为类模式和对象模式。

类模式处理类和子类之间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下来;对象模式处理对象间的关系,这些关系在运行时刻是可以变化的,更具有动态性。

每个模式都伴有定义的语境和强度,语境解释了模式的适用情况,强度是语境中的元素如果问题的环境与模式的语境和强度相匹配,该模式便可应用。

2.1 创建型设计模式

创建型模式与对象的创建有关,即描述怎样创建一个对象,它隐藏对象创建的具体细节,使程序代码不依赖具体的对象。

因此当我们增加一个新对象时几乎不需要修改代码即可。

创建型类模式将对象的部分创建工作延迟到子类,而创建型对象模式则将它延迟到另一个对象中。

创建型类模式有FactoryMethod(工厂方法)模式,创建型对象模式包括AbstractFactory(抽象工厂)、Singleton(单件)等模式。

创建型模式中,AbstractFactory由工厂对象产生多个类的对象;Singleton确保一个类只创建一个实例;FactoryMethod是先生成所要创建的对象的类的子类,即由其子类进行实例化创建对象。

上述模式中,AbstractFactory与FactoryMethod的关系是:

AbstractFactory仅声明一个创建Product(产品)的接口,真正创建Product是由AbstractProduct类的子类ConcreteProduct类来实现,实现办法通常是为每一个Product定义一个FactoryMethod,而一个ConcreteFactory(具体的工厂)将为每个产品重定义FactoryMethod以指定产品。

当然AbstractFactory中的ConcreteFactory也可以用Prototype模式来实现,即具体工厂使用产品系列中每一个产品的原型实例来初始化,再通过复制原型来创建新产品。

2.2 结构型设计模式

结构型模式处理类或对象的组合,即描述类和对象之间怎样组织起来形成大的结构,从而实现新的功能。

结构型类模式采用继承机制来组合类,如Adapter(适配器类)模式;结构型对象模式则描述了对象的组装方式,如Adapter(适配器对象)模式、Composite(组合)模式、Decorator(装饰)模式、Proxy(代理)模式。

结构型模式中,Adapter是将一个类的接口转换成用户希望的另外一个接口;Composite是将对象组合成树型结构以表示“部分—整体”的层次结构;Decorator动态地给一个对象增加一些额外的职责Proxy则是为其他对象提供一种代理以控制对这个对象的访问。

上述模式中,Adapter意味着要改变一个已有对象的接口;Decorator与Adapter的区别是:

Decorator模式增强了对象的功能而又不改变对象的接口,但Adapter模式将给对象一个全新的接口;Proxy与Adapter的区别是:

Proxy提供的是与其实体相同的接口,即在不改变接口的条件下,为另一个对象提供代理,而Adapter为其所适配的对象提供了一个不同的接口。

2.3 行为型设计模式

行为型设计模式描述算法以及对象之间的任务(职责)分配,它所描述的不仅仅是类或对象的设计模式,还有它们之间的通讯模式。

这些模式刻划了在运行时刻难以跟踪的复杂的控制流。

行为型对象模式使用对象复合而不是继承,它描述一组对象怎样协作完成单个对象所无法完成的任务,如Command(命令)模式、Iterator(迭代器)模式、Observer(观察者)模式、Strategy(策略)模式、State(状态)模式。

行为型模式中,Command模式是将一个请求封装成一个对象,从而可用不同的请求对客户进行参数化;Iterator模式提供一种方法顺序访问一个聚合中的各个元素而又不暴露该对象的内部表示用;Observer是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知,并自动更新;State模式是允许一个对象在其内部状态改变时改变它的行为;Strategy定义一系列的封装算法,把他们一个个封装起来,并使它们可以相互替换;TemplateMethod是定义一个操作中的算法的构架,而将一些步骤延迟到子类中(即一次性实现一个算法的不变部分,并将可变的行为留给子类来实现)。

上述行为模式之间是相互补充的关系,例如Iterator可以遍历一个聚合。

行为型模式和其他类型的模式也能很好的协同工作,如一个使用Composite模式的系统可以使用Iterator进行遍历。

2.4 各种模式之间的关系

如上所述,创建型模式与对象的创建有关,结构型模式处理类和对象的组合,行为型模式描述算法以及对象之间的任务分配。

因此所有模式之间都是通过类或对象的创建、组合或通讯发生联系。

图1显示出各模式之间的协作关系。

图1各种模式与对象之间的模式图

 

第3章设计模式的选择与实现

使用设计模式能给设计人员带来很多好处,而要得到这样的好处,需要根据实际情况,进行正确的模式选择。

选择模式的方法很多,特别是随着对设计模式研究的广泛开展,越来越多的模式被发现,人们也开始寻找自动获取模式的方法,但还不成熟。

在目前的实际工作当中,人们仍然采用传统的模式选择方法,主要凭借对设计模式功能的理解和自身的设计经验。

这要求设计人员对所有设计模式都有较深的理解和掌握。

然而,对于模式选择方法的介绍,大多是基于单个方法的,并没有对方法间的联系加以阐述,容易导致人们孤立地看待问题,不便于使用。

我们通过对已有的模式选择方法加以总结、归纳、简化并把它们联系起来,发现在选择模式时基本可以遵循以下的步骤和原则:

(1)理解问题需求:

需求是模式选择的基础,通过对需求的分析可以找到多个模式,形成模式组;任意一个需求,总是牵涉到一个或几个特定的问题领域。

例如:

假定你正在准备设计一个编译器,为了遍历抽象语法树,很可能想到要用Iterator(迭代器)进行遍历,又因为抽象语法树通常是复合模式的实例,所以可能要用到Composite模式等等。

这种首先理解问题需求,然后循序渐进地不断找出可能要用到的模式或模式组,从宏观上选择设计模式的方法在设计过程中也许大有益处。

(2)研究组内模式:

需求分析得出的组内模式有一些共性,但是每种模式都有其特殊的意图、使用动机和使用条件,因此需要对组内模式进行研究;

同时,很多模式之间总是相互补充,因此必须研究模式之间的相互关联,弄清设计模式之间的关系,对寻找合适的模式或模式组具有指导作用。

此外,对一个实际问题,必须考虑到设计中那些是可变的,而这些变化是否会引起系统必须重新设计,然后找出相关的模式以尽量避免引起重新设计。

这是从微观上选择设计模式的方法,它要求设计人员对各种模式有比较清楚的理解和掌握。

(3)考虑设计模式如何解决设计问题:

在此过程中,主要考虑设计模式在设计中所支持的可变化因素,即确定改变什么而不需重新设计,根据这一点可以找到所需的设计模式。

此外考虑与其相关的设计模式。

第4章设计模式应用举例

根据以上3步的筛选就能选出符合需求的设计模式。

结合教学信息平台系统的开发,通过对面向对象软件的各种设计模式的研究与分析,在项目开发过程中应用了多种设计模式,实现了软件设计开发的灵活性和可复用性。

说明这是一个行之有效的模式选择方法。

(1)外观设计。

在页面设计上使用了Decorator的设计模式,Decorator模式描述了以透明围栏来支持修饰的类和对象的关系。

浏览器的选择使用了AbstractFactory的设计模式,Factory(浏览器)Product(界面)是AbstractFactory模式的主要参与者,该模式描述了怎样在不直接实例化类的情况下创建一系列相关的产品对象,它最适用于产品对象的数目和种类不变,而具体产品系列之间存在不同的情况。

(2)接口设计。

对于这个系统,采用的是Strategy的设计模式。

在对象中封装算法是Strategy模式的目的。

Strategy模式应用的关键点在于为Strategy和它的环境设计足够通用的接口,以支持一系列的算法。

(3)登录模块。

用户登录功能是常见的模块,整个设计模式建立在MVC框架下。

(4)文件档案模块。

在文件模块的设计过程中,主要使用了Adapter,Command,Singleton,AbstractFactory这4种设计模式。

在本模块调用文件功能的地方,在接口上文件功能类和所需要的接口并不完全一致,需要进行转换,因此,在这个地方使用了Adapter的设计模式;文件的功能多种多样的,设计的时候需要考虑可扩展性,使用Command设计模式,使得内部功能透明;考虑到文件操作存在资源的主占和共享的问题,文件在打开时可以多人同时访问,然而在删除、上传、修改时需要保证文件当时只有一个用户使用,因此,使用Singleton模式保证了这一点;同样考虑到文件的访问需要读取文件的属性和他们的内容,对于不同格式的文件的访问的方法各不相同,使用AbstractFactory模式保证了接口的统一性和可扩展性。

第5章总结

过去几年中,面向对象领域取得的最大进展就是设计模式概念的提出和发展,设计模式由于其实用性而受到欢迎,在表达上既简单又清楚而受到越来越多的重视。

本文通过对面向对象软件工程的研究,总结了软件设计模式应用的一般规律,描述了设计模式在设计可重用性面向对象软件中的重要性、各种软件设计模式的概念和它们之间的关系,以及如何选择和使用这些模式。

有效地应用软件设计模式开发面向对象软件系统,既可以提高软件设计效率及完善设计,也可以优化系统的性能,提高软件设计的灵活性。

随着面向对象理论的发展,软件设计模式会得到进一步的充实和发展。

本文从具体的系统出发,认真地讨论了设计模式在软件设计中的应用。

旨在提高对设计模式的认识,以及在后期的软件设计中可以灵活运用设计模式。

来达到,设计出更合理的,更高质量的软件。

本文首先概述设计模式的定义,其次深刻讨论了设计模式的分类、各个模式的特点及模式之间的关系。

其次又讲述了在使用软件设计模式,选取过程中的策略。

再次就是号召大家要灵活运用软件设计模式。

只有灵活运用才可以使设计模式发挥到更好的效果,才有助于我们程序设计人员设计出更高,更强,更优秀的软件。

参考文献

[1]郭健强;面向对象软件测试理论与技术的研究[D];西安电子科技大学;1999年

[2]邹娟,田玉敏.软件设计模式的选择与实现[J].计算机工程,2004,30(10):

79281.

[3]李英军,等译.设计模式[M].北京:

机械工业出版社,2000.

[4]钟茂生,王明文.软件设计模式及其使用[J].计算机应用,2002

[5]陈波,宁洪.设计模式分析与应用[J].计算机工程与应用,2003,46(3):

146.148

[6]许增旺.基于设计模式的企业应用的研究及应用[D].大连理工大学硕士学位论文,2005

[7]程杰.大话设计模式.北京:

清华大学出版社,2007

指导教师评语

 

成绩:

指导教师签名:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1