软件体系结构与设计模式 第四章.ppt

上传人:qwe****56 文档编号:69529794 上传时间:2023-01-06 格式:PPT 页数:18 大小:115.50KB
返回 下载 相关 举报
软件体系结构与设计模式 第四章.ppt_第1页
第1页 / 共18页
软件体系结构与设计模式 第四章.ppt_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《软件体系结构与设计模式 第四章.ppt》由会员分享,可在线阅读,更多相关《软件体系结构与设计模式 第四章.ppt(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第四章第四章 设计模式简介设计模式简介4.1 什么是软件模式?软件开发中重复出现问题的解决方案;一种来源于具体问题形式的抽象,这种抽象在特定环境中出现generic definition;在给定的问题环境和约束条件下,对通用问题的重复解决方案Alexander;一种经过证明的、在给定条件下问题的有效的重复解决方案。它象一个“大金块”传递了解决方案的本质。(点石成金的方法)。经过多次成功使用,已经被证明的“最佳实践方法”;用文字、图表描述的方式来捕捉设计专家的智慧和经验,并把这些经验传递给新手。一个模式是软件模式是对通用设计问题的重复解决方案对真实世界问题的实践的/具体的解决方案面向特定的问题环

2、境权衡利弊之后得到的“最佳”解决方案领域专家和设计老手的“杀手锏”用文档的方式记录的最佳实践在讨论问题的解决方案时,一种可交流的词汇在使用(重用)、共享、构造软件系统中,一种有效地使用已有的智慧/经验/专家技术的方式软件模式不是仅仅限于面向对象的软件设计未经检验的想法/理论或新的发现仅仅使用过一次的解决方案以模式的形式描述过时的技术和方法抽象原理或启发性的构想在任何环境下都适用的通用解决方案“万精油”或“万能药”软件模式的作用与意义Use CaseSource Code分析模式设计模式Idioms模式需求分析模型设计模型重用(优化模型)重用(优化模型)重用(优化程序)积储积储积储Busines

3、s Domain Model应用领域建模业务领域模式积储重用(优化模型)什么是设计模式什么是设计模式?设计模式(pattern)是从许多优秀的软件系统中总结出的成功的可复用的设计方案。纪录模式的四个基本要素记录一个设计模式需有四个基本要素:1名称名称 一个模式的名称高度概括该模式的本质,有利于该行业统一术语、便于交流使用。2问题问题 描述应该在何时使用模式,解释设计问题和问题存在的前因后果,描述在怎样的环境下使用该模式。3方案方案 描述设计的组成部分,它们之间的相互关系及各自的职责和协作方式。4效果效果 描述模式的应用效果及使用模式应当权衡的问题。主要效果包括使用模式对系统的灵活性、扩充性和复

4、用性的影响。例如,GOF之书如下记录中介者模式:名称名称 中介者问题问题 用一个中介者来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。方案方案 中介者(Mediator)接口、具体中介者(ConcreteMediator)、同事(Colleague)、具体同事(ConcreteColleague)。效果效果 减少了子类的生成、将各个同事解耦、简化了对象协议、控制集中化。4.2 设计模式的起源设计模式的起源1软件领域的设计模式起源主要是受到1977年建筑大师Alexander出版的A Pattern Language:Towns,B

5、uilding,Construction一书。2Alexander在其著作中将其建筑行业中的许多问题的最佳解决方案记录为200多种模式,其思想不仅在建筑行业影响深远,而且很快影响到了软件设计领域。31987年,Kent Beck和Ward Cunningham将Alexander在建筑学上的模式观点应用于软件设计,开发了一系列模式,并用Smalltalk语言实现了雅致的用户界面。Kent Beck和Ward Cunningham在1987年举行的一次面向对象的会议上发表了论文:在面向对象编程中使用模式,该论文发表后,有关软件的设计模式论文以及著作相继出版。4.3 GOF之著作之著作目前,被公认

6、在设计模式领域最具影响力的著作是目前,被公认在设计模式领域最具影响力的著作是Erich Gamma、Richard Helm、Ralph Johnson和和John Vlissides在在1994年合作出版的著作:年合作出版的著作:Design Patterns:Elements of Reusable Object-Oriented Software(中译本(中译本设计模式:可复用的面向对象软设计模式:可复用的面向对象软件的基本原理件的基本原理 或或设计模式设计模式),该书被广大喜爱者),该书被广大喜爱者昵称为昵称为GOF(Gang of Four)之书,被认为是学习设计)之书,被认为是学习

7、设计模式的必读著作,模式的必读著作,GOF之书已经被公认为是设计模式领之书已经被公认为是设计模式领域的奠基之作。域的奠基之作。4.4学习设计模式的重要性学习设计模式的重要性1一个好的设计系统往往是易维护、易扩展、易复用的。2有经验的设计人员或团队知道如何使用面向对象语言编写出易维护、易扩展和易复用的程序代码。3设计模式一书正是从这些优秀的设计系统中总结出的设计精髓。4学习设计模式对提高设计能力无疑是非常有帮助的,尽管GOF之书并没有收集全部的模式,但所阐述的23种模式无疑是使用频率最高的模式。5设计模式的目的不是针对软件设计和开发中的每个问题都给出解决方案,而是针对某种特定环境中通常都会遇到的

8、某种软件开发问题给出的可重用的一些解决方案。6学习设计模式不仅可以使我们使用好这些成功的模式,更重要的是可以使我们更加深刻地理解面向对象的设计思想,非常有利于我们更好地使用面向对象语言解决设计中的问题。7学习设计模式对于进一步学习、理解和掌握框架是非常有帮助的,比如Java EE中就大量使用了设计模式一书中的模式,对于熟悉设计模式的开发人员,很容易理解这些框架的结构,继而很好地使用框架来设计他们的系统。8设计模式一书所总结的成功模式不仅适合于面向对象语言,其思想及解决问题的方式也适合于任何和设计相关的行业,因此学习掌握设计模式无疑是非常有益的。4.5 合理使用模式合理使用模式 不是软件的任何部

9、分都需要套用模式来设计的,必须针对具体问题合理的使用模式。1.正确使用正确使用 当你设计某个系统,并确认所遇到的问题刚好适合使用某个模式,就可以考虑使用该模式到你的系统设计中,毕竟该模式已经被公认是解决该问题的成功方案,能使设计的系统易维护、可扩展性强、复用性好,而且这些经典的模式也容易让其他开发人员了解你的系统和设计思想。2.避免教条避免教条模式不是数学公式、也不是物理定律、更不是软件设计中的“法律”条文,一个模式只是成功解决某个特定问题的设计方案,你完全可以修改模式中的部分结构以符合你的设计要求。3.模式挖掘模式挖掘 模式不是用理论推导出来的,而是从真实世界的软件系统中被发现、按着一定规范

10、总结出来的可以被复用的方案。许多文献或书籍里阐述的众多模式实际上都是GOF书中经典模式的变形,这些变形模式都经过所谓的“三次规则”,即该模式已经在真实世界的三个方案中被成功的采用。可以从某个系统中洞察出某种新模式,只要经过“三次规则”就会被行业认可。4.避免乱用避免乱用 不是所有的设计中都需要使用模式,因为模式不是发明出来的,而是总结出来的,事实上,真实世界中的许多设计实例都没有使用过GOF之书中的经典模式。在进行设计时,尽可能用最简单的方式满足系统的要求,而不是费尽心机地琢磨如何在这个问题中使用模式,一个设计中,可能并不需要使用模式就可以很好地满足系统的要求,如果牵强地使用某个模式可能会在系

11、统中增加许多额外的类和对象,影响系统的性能,因为大部分设计模式往往会在系统中加入更多的层,这不但增加复杂性,而且系统的效率也会下降。5.了解反模式了解反模式 所谓反模式就是从某些软件系统中总结出的不好的设计方案,反模式就是告诉你如何采用一个不好的方案解决一个问题。既然是一个不好的方案,为何还有可能被重复使用呢?这是因为,这些不好的方案表面上往往有很强的吸引力,人们很难一眼就发现它的弊端,因此,发现一个反模式也是非常有意义的工作。在有了一定的设计模式的基础之后,你可以用搜索引擎查找有关反模式的信息,这对于学习好设计模式也是非常有帮助的。4.6 什么是框架什么是框架 框架不是模式,框架是针对某个领

12、域,提供用于开发应用系统的类的集合,程序设计者可以使用框架提供的类设计一个应用程序,而且在设计应用程序时可以针对特定的问题使用某个模式。框架和模式的区别1层次不同层次不同 模式比框架更抽象,模式是在某种特定环境中,针对一个软件设计出现的问题而给出的可复用的解决方案,不能向使用者提供可以直接使用的类,设计模式只有在被设计人员使用时才能表示为代码,例如,GOF描述的中介者模式:“用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互”,该模式在解决方案中并没有提供任何类的代码,只是说明设计者可以针对特定的问题使用该模式给出的方案

13、。框架和模式不同,它不是一种可复用的设计方案,它是由可用于设计解决某个问题的一些类组成的集合,程序设计人员通过使用框架提供的类或扩展框架提供的类进行应用程序的设计,例如。在Java中,开发人员使用Swing框架提供的类设计用户界面;使用Set(集合)框架提供的类处理数据结构相关的算法等。2范围不同范围不同 模式本质上是逻辑概念,以概念的形式而存在,模式所描述的方案独立于编程语言。Java程序员、C+程序员或SmallTalk程序员都可以在自己的系统设计中使用某个模式。框架的应用的范围是很具体的,它们不是以概念的形式而存在,而是以具体的软件组织而存在,只能被特定的软件设计者使用,比如Java提供

14、的 Swing框架只能为Java应用程序所使用。3相互关系相互关系 一个框架往往会包括多个设计模式,它们是面向对象系统获得最大复用的方式,较大的面向对象应用会由多层彼此合作的框架组成,例如,Java Web设计中的Struts,Spring和Hibernate等框架。框架变得越来越普遍和重要,导致许多开源框架的出现,而且一个著名的框架往往是许多设计模式的具体体现,我们甚至可以在一些成功的框架中挖掘出新的模式。4.7 使用使用Java描述模式的必要性描述模式的必要性 Java不仅可以用来开发大型的桌面应用程序,而且特别适合于Internet的应用开发。目前,Java语言不仅是一门正在被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。Java语言面向对象编程,并涉及到网络、多线程等重要的基础知识,而且很多新的技术领域都涉及到了Java语言,国内外许多大学已将Java语言列入了本科教学计划。GOF之书无疑是经典之作,但是该书中的示例代码相当简练,而且是采用C+描述的,另外C+中提到的接口就是指类的方法,但是在Java中,类和接口是两个不同的概念。本书之所以采用Java语言讲解GOF之书中的23个模式,其原因不仅是因为Java语言的广泛使用,而且希望设计模式的学习更加适合具有一定Java语言基础的学生和程序员。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 财经金融

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com