01设计模式概述.ppt

上传人:asd****56 文档编号:93475349 上传时间:2023-07-06 格式:PPT 页数:46 大小:11.68MB
返回 下载 相关 举报
01设计模式概述.ppt_第1页
第1页 / 共46页
01设计模式概述.ppt_第2页
第2页 / 共46页
点击查看更多>>
资源描述

《01设计模式概述.ppt》由会员分享,可在线阅读,更多相关《01设计模式概述.ppt(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、LOGO设计模式(Design Pattern)张凯 副教授计算机学院 软件工程系武汉科技大学主要内容设计模式发展1设计模式定义2设计模式分类3设计模式优点4武汉科技大学设计模式课程 2011年2月国务院学位委员会修订学科目录,新增软件工程专业为一级学科。我们学院2011年成功申请了软件工程一级学科硕士学位授权点。武汉科技大学设计模式课程(一级学科)计算机科学与技术(二级学科)计算机体系结构计算机软件与理论计算机应用(专业方向)软件工程智能辅助决策支持系统计算机辅助设计计算机网络与分布式系统数据库系统与多媒体信息自然语言处理与机器翻译算法的设计与计算复杂性并行计算与petri网武汉科技大学设计

2、模式课程 软件工程这个学科已发展为计算机科学与技术、数学、工程学、管理学等相关学科的交叉性学科 软件工程学科涉及到学术研究与工程应用两个层次武汉科技大学设计模式课程v随着计算机软件工程技术和面向对象技术的发展,设计模式已经成为软件设计人员必须掌握的思想和技术。可以说只有设计模式才能真正实现代码编制的工程化,才能真正实现代码的重用性和可维护性。武汉科技大学思考v 实例一 庞大的跨平台图像浏览系统v 实例二 不够灵活的影院售票系统v 实例三 重用第三方算法库时面临的问题武汉科技大学思考v庞大的跨平台图像浏览系统 实例说明 某软件公司要开发一个跨平台图像浏览系统,要求该系统能够显示BMP、JPG、G

3、IF、PNG等多种格式的文件,并且能够在Windows、Linux、Unix等多个操作系统上运行。系统首先将各种格式的文件解析为像素矩阵(Matrix),然后将像素矩阵显示在屏幕上,在不同的操作系统中可以调用不同的绘制函数来绘制像素矩阵。武汉科技大学思考v初始设计方案武汉科技大学思考v庞大的跨平台图像浏览系统 问题(1)采用了多层继承结构,导致系统中类的个数急剧增加,具体层的类的个数=所支持的图像文件格式数所支持的操作系统数(2)系统扩展麻烦,无论是增加新的图像文件格式还是增加新的操作系统,都需要增加大量的具体类,这将导致系统变得非常庞大,增加运行和维护开销武汉科技大学思考v不够灵活的影院售票

4、系统 实例说明 某软件公司为某电影院开发了一套影院售票系统,在该系统中需要为不同类型的用户提供不同的电影票打折方式,具体打折方案如下:(1)学生凭学生证可享受票价8折优惠;(2)年龄在10周岁及以下的儿童可享受每张票减免10元的优惠(原始票价需大于等于20元);(3)影院VIP用户除享受票价半价优惠外还可进行积分,积分累计到一定额度可换取电影院赠送的奖品。该系统在将来可能还要根据需要引入新的打折方式。class MovieTicket/电影票类 private double price;/电影票价格 private string type;/电影票类型/计算打折之后的票价 public dou

5、ble Calculate()/学生票折后票价计算 if(this.type.Equals(student)Console.WriteLine(学生票:);return this.price*0.8;/儿童票折后票价计算 else if(this.type.Equals(children)&this.price=20)Console.WriteLine(儿童票:);return this.price-10;/VIP 票折后票价计算 else if(this.type.Equals(vip)Console.WriteLine(VIP 票:);Console.WriteLine(增加积分!);re

6、turn this.price*0.5;else return this.price;/如果不满足任何打折要求,则返回原始票价 武汉科技大学思考v不够灵活的影院售票系统 问题(1)MovieTicket类的Calculate()方法非常庞大,它包含各种打折算法的实现代码,在代码中出现了较长的条件转移语句,不利于测试和维护(2)在增加新的打折算法或者对原有打折算法进行修改时必须修改MovieTicket类的源代码,系统的灵活性和可扩展性较差(3)算法的复用性差,如果另一个系统需要重用某些打折算法,只能通过对源代码进行复制粘贴来重用,无法单独重用其中的某个或某些算法武汉科技大学思考v重用第三方算法

7、库时面临的问题 实例说明 某软件公司在开发一个银行业务处理系统时需要对其中的机密数据进行加密处理,通过分析发现,用于加密的程序已经存在于一个第三方算法库中,但是没有该算法库的源代码。在系统初始设计阶段,已定义数据操作接口DataOperation,且该接口已被很多同事使用,对该接口的修改势必导致大量代码需要产生改动。武汉科技大学思考v重用第三方算法库时面临的问题 问题 如何在既不修改现有接口又不需要算法库源代码的基础上能够实现第三方算法库的重用是该软件公司开发人员必须面对的问题。武汉科技大学思考武汉科技大学设计模式发展v模式之父 美国加利佛尼亚大学环境结构中心研究所所长Christopher

8、Alexander博士。武汉科技大学设计模式发展A Pattern Language:Towns,Buildings,Construction 书中讲述了建筑领域的253个模式,用“模式”(Pattern)这一词来描述建筑的构造方法,并为模式的作出了定义,指出这些模式并不会随着时间消逝而褪色。武汉科技大学设计模式发展vAlexander给出的模式经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地使用那些已有的解决方案,无需再重复相同的工作。v模式:A pattern is a successful or efficie

9、nt solution to a recurring problem within a context模式是在特定环境下人们解决某类重复问题的一套成功或有效的解决方案。武汉科技大学设计模式发展v到1987年,Kent Beck 和Ward Cunningham开始尝试把设计模式引入到编程世界,并在OOPSLA大会上发表了自己的看法。vOOPSLA(Object-Oriented Programming,Systems,Languages&Applications,面向对象编程、系统、语言和应用大会)是编程语言及软件工程国际顶级会议,主办方是计算机协会(ACM)。2010年改为SPLASH-Sy

10、stems,Programming,Languages and Applications:Software for Humanity。武汉科技大学设计模式发展v1994年10月,被称为四人帮(GoF)的Erich Gamma,Richard Helm,Ralph Johnson and John Vlissides四人编写的书籍“Design Patterns:Elements of Reusable Object-Oriented Software”面世,武汉科技大学设计模式发展v这本书在后来设计模式学习和研究中影响非常广泛,到2007年为止共重印36次,被翻译成13种其他语言。v在此书中,

11、GOF总结了多年来软件开发人员的实践经验和研究成果,收编了23个最常用的设计模式,可谓影响深远。武汉科技大学设计模式发展Erich Gamma苏黎世大学计算机科学博士,是Eclipse、JUnit 等项目主要技术负责人之一。John Vlissides斯坦福大学计算机科学博士,原IBM研究员,于2005年11月24日因脑瘤去世,享年44岁。Ralph Johnson 墨尔本大学计算机科学博士,原IBM 研究员,现在波士顿顾问集团供职。Richard Helm康奈尔大学计算机科学博士,伊利诺伊大学教授。武汉科技大学设计模式发展v时至今日,这本书仍有不计其数的兄弟书籍诞生出来,可谓影响深远。武汉科

12、技大学设计模式发展v现在,除了最常提到的GoF的23种设计模式之外,不断有各种各样的模式提出来,包括分析模式、架构模式、过程模式、组织模式、实现模式、反模式武汉科技大学设计模式发展v软件设计模式的发展 1987年,Kent Beck和Ward Cunningham借鉴Alexander的模式思想在程序开发中开始应用一些模式,在OOPSLA会议上发表了他们的成果。(Object-Oriented Programming,Systems,Languages&Applications)是计算机协会(ACM)的一个年度性会议,主要在美国举办。武汉科技大学设计模式发展v软件设计模式的发展 1990年,O

13、OPSLA与ECOOP(欧洲的姐妹会议)联合举办,Erich Gamma和Richard Helm等人开始讨论有关模式的话题(Bruce Anderson主持),“四人组”正式成立,并开始着手进行设计模式的分类整理工作。1991 年,OOPSLA,Bruce Anderson主持了首次针对设计模式的研讨会。1992 年,OOPSLA,Anderson再度主持研讨会,模式已经逐渐成为人们讨论的话题。武汉科技大学设计模式发展v软件设计模式的发展 1993年,Kent Beck 和 Grady Booch 赞助了第一次关于设计模式的会议,这个设计模式研究组织发展成为著名的Hillside Group

14、研究组。Hillside小组是模式社区的基石。它在全世界赞助了多次PLoP会议,包括北美的PLoP、斯堪的纳维亚的VikingPLoP和欧洲的EuroPLoP。此外,PatternLanguagesofProgramDesign系列丛书也是在Hillside的赞助下出版的。武汉科技大学设计模式发展v软件设计模式的发展 1994 年,由Hillside Group发起,在美国伊利诺伊州(Illinois)的Allerton Park召开了第1届关于面向对象模式的世界性会议,名为PLoP(Pattern Languages of Programs,编程语言模式会议),简称PLoP94。1995年,

15、PLoP95 仍在伊利诺伊州的Allerton Park举行,“四人组”出版了设计模式:可复用面向对象软件的基础(Design Patterns:Elements of Reusable Object-Oriented Software)一书,本书成为1995年最抢手的面向对象书籍,也成为设计模式的经典书籍。武汉科技大学设计模式发展v软件设计模式的发展 从1995年至今,设计模式在软件开发中得以广泛应用,在Sun的Java SE/Java EE平台和Microsoft的.net平台设计中就应用了大量的设计模式。诞生了越来越多的与设计模式相关的书籍和网站,设计模式也作为一门独立的课程或作为软件体

16、系结构等课程的重要组成部分出现在国内外研究生和大学教育的课堂上。武汉科技大学设计模式定义v设计模式的定义 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。武汉科技大学设计模式定义v设计模式的基本要素 设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素包括以下四个方面:模式名称(Pattern name)问题(Problem)解决方案(Solution)效果(Consequences)通过一两个词来为模式命名,

17、以便我们更好地理解模式,并方便开发人员之间的交流,通常模式都是根据其功能或结构命名。描述了应该在何时使用模式,它包含了设计中存在的问题以及问题存在的原因。描述了一个设计模式的组成部分,以及这些组成部分之间的相互关系,各自的职责和协作方式,通常解决方案通过 UML类图和核心代码进行描述。描述了模式的优缺点以及在使用模式时应权衡的问题。武汉科技大学设计模式定义v设计模式学习步骤 本课程将按照以下次序来学习设计模式:模式动机与定义 模式结构与分析 模式实例与解析 模式效果与应用 模式扩展 武汉科技大学设计模式分类v设计模式的分类 根据其目的(模式是用来做什么的)可分为创建型(Creational),

18、结构型(Structural)和行为型(Behavioral)三种 创建型模式主要用于如何创建对象。结构型模式主要用于如何实现类或对象的组合。行为型模式主要用于描述对类或对象怎样交互和怎样分配职责。武汉科技大学设计模式分类v设计模式的分类 根据范围,即模式主要是用于处理类之间关系还是处理对象之间的关系,可分为类模式和对象模式两种:类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是属于静态的。对象模式处理对象间的关系,这些关系在运行时刻变化,更具动态性。武汉科技大学设计模式分类范围目的创建型模式 结构型模式 行为型模式类模式 FactoryMethod Adapter

19、_ClassInterpreterTemplateMethod对象模式AbstractFactoryBuilderPrototypeSingletonAdapter_ObjectBridgeCompositeDecoratorFacadeFlyweightProxyChainofResponsibilityCommandIteratorMediatorMementoObserverStateStrategyVisitor武汉科技大学设计模式分类范围目的创建型模式 结构型模式 行为型模式类模式 工厂方法模式(类)适配器模式解释器模式模板方法模式对象模式抽象工厂模式建造者模式原型模式单例模式(对象

20、)适配器模式桥接模式组合模式装饰模式外观模式享元模式代理模式职责链模式命令模式迭代器模式中介者模式备忘录模式观察者模式状态模式策略模式访问者模式武汉科技大学设计模式分类v创建型模式 抽象工厂模式(Abstract Factory)建造者模式(Builder)工厂方法模式(Factory Method)原型模式(Prototype)单例模式(Singleton)武汉科技大学设计模式分类v结构型模式 适配器模式(Adapter)桥接模式(Bridge)组合模式(Composite)装饰模式(Decorator)外观模式(Facade)享元模式(Flyweight)代理模式(Proxy)Attack

21、?要我干啥嘛?武汉科技大学设计模式分类v行为型模式 职责链模式(Chain of Responsibility)命令模式(Command)迭代器模式(Iterator)中介者模式(Mediator)备忘录模式(Memento)观察者模式(Observer)状态模式(State)策略模式(Strategy)模板方法模式(Template Method)访问者模式(Visitor)解释器模式(Interpreter)武汉科技大学设计模式优点v设计模式是从许多优秀的软件系统中总结出的成功的、能够实现可维护性复用的设计方案,使用这些方案将避免我们做一些重复性的工作,而且可以设计出高质量的软件系统。武汉

22、科技大学设计模式优点v设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间沟通和交流,使得设计方案更加通俗易懂。对于使用不同编程语言的开发和设计人员可以通过设计模式来交流系统设计方案,设计模式可以降低开发人员理解系统的复杂度。武汉科技大学设计模式优点v设计模式的使用将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本。v设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读和学习现有类库与其他系统中的源代码,另一方面还可以提高软件的设计水平和代码质量。武汉科技大学本章小结v模式是在特

23、定环境中解决问题的一种方案。vGoF(Erich Gamma,Richard Helm,Ralph Johnson和John Vlissides)最先将模式的概念引入软件工程领域,他们归纳发表了23种在软件开发中使用频率较高的设计模式,旨在用模式来统一沟通面向对象方法在分析、设计和实现间的鸿沟。v软件模式是将模式的一般概念应用于软件开发领域,即软件开发的总体指导思路或参照样板。软件模式可以认为是对软件开发这一特定“问题”的“解法”的某种统一表示,即软件模式等于一定条件下的出现的问题以及解法。武汉科技大学本章小结v设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。v设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素包括模式名称、问题、解决方案和效果。v设计模式根据其目的可分为创建型,结构型和行为型三种;根据范围可分为类模式和对象模式两种。v设计模式是从许多优秀的软件系统中总结出的成功的、能够实现可维护性复用的设计方案,使用这些方案将避免我们做一些重复性的工作,而且可以设计出高质量的软件系统。LOGO

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

当前位置:首页 > 应用文书 > 项目管理

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁