01.设计模式.概述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
www.wust.edu.cn
思考
武汉科技大学
www.wust.edu.cn
设计模式发展
模式之父
——美国加利佛尼亚大学环境结构中心研究所 所长Christopher Alexander博士。
武汉科技大学
www.wust.edu.cn
设计模式发展
《A Pattern Language: Towns,Buildings,Construction》
武汉科技大学
www.wust.edu.cn
设计模式发展
1994年10月,被称为四人帮(GoF)的Erich Gamma, Richard Helm,Ralph Johnson and John Vlissides四人编写的书籍“Design Patterns: Elements of Reusable Object-Oriented Software”面世,
class MovieTicket //电影票类 { private double price; //电影票价格 private string type; //电影票类型 …… //计算打折之后的票价 public double 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("增加积分!"); return this.price * 0.5; } else { return this.price; //如果不满足任何打折要求,则返回原始票价 } } }
武汉科技大学
www.wust.edu.cn
设计模式发展
这本书在后来设计模式 学习和研究中影响非常 广泛,到2007年为止共 重印36次,被翻译成13 种其他语言。
在此书中,GOF总结了多 年来软件开发人员的实 践经验和研究成果,收 编了23个最常用的设计 模式,可谓影响深远。
武汉科技大学
JPGWindowsImp
JPGLinuxImp
JPGUnixImp
PNGWindowsImp
PNGLinuxImp
PNGUnixImp
武汉科技大学
www.wust.edu.cn
思考
庞大的跨平台图像浏览系统 问题
• (1) 采用了多层继承结构,导致系统中类的个数急剧 增加,具体层的类的个数 = 所支持的图像文件格式 数×所支持的操作系统数
设计模式发展
到1987年,Kent Beck 和Ward Cunningham开始尝 试把设计模式引入到编程世界,并在OOPSLA大会上 发表了自己的看法。
OOPSLA (Object-Oriented Programming, Systems, Languages & Applications,面向对象编程、系统、 语言和应用大会)是编程语言及软件工程国际顶级 会议,主办方是计算机协会(ACM)。2010年改为 SPLASH --- Systems, Programming, Languages and Applications: Software for Humanity。
武汉科技大学
www.wust.edu.cn
思考
初始设计方案
Image {abstract}
BMPImage
JPGImage
GIFImage
PNGImage
BMPWindowsImp BMPLinuxImp BMPUnixImp
GIFWindowsImp
GIFLinuxImp
GIFUnixImp
设计模式(Design Pattern)
张凯 副教授 计算机学院 软件工程系
LOGO
百度文库
武汉科技大学
www.wust.edu.cn
主要内容
1 2
设计模式发展 设计模式定义
设计模式分类 设计模式优点
3 4
武汉科技大学
www.wust.edu.cn
设计模式课程
2011年2月国务院学位委员会修订学科目录,新增 软件工程专业为一级学科。 我们学院2011年成功申请了软件工程一级学科硕
John Vlissides
斯坦福大学计算机科学博士, 原IBM研究员,于2005年11月 24日因脑瘤去世,享年44岁。
武汉科技大学
www.wust.edu.cn
设计模式发展
时至今日,这本书仍有不计其数的兄弟书籍诞生 出来,可谓影响深远。
武汉科技大学
www.wust.edu.cn
设计模式发展
书中讲述了建筑领域的253个模式, 用“模式” (Pattern)这一词来描述建筑的构造方法,并为模式的作出了定
义,指出这些模式并不会随着时间消逝而褪色。
武汉科技大学
www.wust.edu.cn
设计模式发展
Alexander给出的模式经典定义是:每个模式都 描述了一个在我们的环境中不断出现的问题, 然后描述了该问题的解决方案的核心,通过这 种方式,我们可以无数次地使用那些已有的解 决方案,无需再重复相同的工作。
• (2) 系统扩展麻烦,无论是增加新的图像文件格式还
是增加新的操作系统,都需要增加大量的具体类,这 将导致系统变得非常庞大,增加运行和维护开销
武汉科技大学
www.wust.edu.cn
思考
不够灵活的影院售票系统 实例说明
• 某软件公司为某电影院开发了一套影院售票系统,在
该系统中需要为不同类型的用户提供不同的电影票打
模式:A pattern is a successful or efficient solution to a recurring problem within a context——模式是在特定环境下人 们解决某类重复问题的一套成功或有效的解决 方案。
武汉科技大学
www.wust.edu.cn
展,设计模式已经成为软件设计人员必须掌握
的思想和技术。可以说只有设计模式才能真正
实现代码编制的工程化,才能真正实现代码的
重用性和可维护性。
武汉科技大学
www.wust.edu.cn
思考
实例一 庞大的跨平台图像浏览系统 实例二 不够灵活的影院售票系统
实例三
重用第三方算法库时面临的问题
(一级学科) 计算机科学与技术
武汉科技大学
www.wust.edu.cn
设计模式课程
软件工程这个学科已发展为计算机科学与技术、
数学、工程学、管理学等相关学科的交叉性学科
软件工程学科涉及到学术研究与工程应用两个层次
武汉科技大学
www.wust.edu.cn
设计模式课程
随着计算机软件工程技术和面向对象技术的发
武汉科技大学
www.wust.edu.cn
思考
庞大的跨平台图像浏览系统 实例说明
• 某软件公司要开发一个跨平台图像浏览系统,要求该
系统能够显示BMP、JPG、GIF、PNG等多种格式的文件, 并且能够在Windows、Linux、Unix等多个操作系统上 运行。系统首先将各种格式的文件解析为像素矩阵 (Matrix),然后将像素矩阵显示在屏幕上,在不同的 操作系统中可以调用不同的绘制函数来绘制像素矩阵。
武汉科技大学
www.wust.edu.cn
设计模式发展
软件设计模式的发展
1993年,Kent Beck 和 Grady Booch 赞助了第一次关于设 计模式的会议,这个设计模式研究组织发展成为著名的 Hillside Group研究组。
Hillside 小组是模式社区的基石。它在全世界赞助了多次 PLoP 会议,包括北美的 PLoP、斯堪的纳维亚的 VikingPLoP 和欧洲 的 EuroPLoP。此外,《Pattern Languages of Program Design》 系列丛书也是在 Hillside 的赞助下出版的。
武汉科技大学
www.wust.edu.cn
思考
不够灵活的影院售票系统 问题
• (1) MovieTicket类的Calculate()方法非常庞大,它
包含各种打折算法的实现代码,在代码中出现了较长 的条件转移语句,不利于测试和维护 • (2) 在增加新的打折算法或者对原有打折算法进行修 改时必须修改MovieTicket类的源代码,系统的灵活 性和可扩展性较差 • (3) 算法的复用性差,如果另一个系统需要重用某些 打折算法,只能通过对源代码进行复制粘贴来重用, 无法单独重用其中的某个或某些算法
武汉科技大学
www.wust.edu.cn
设计模式发展
www.wust.edu.cn
设计模式发展
Erich Gamma
苏黎世大学计算机科学博士,是 Eclipse、 JUnit 等项目主要技术 负责人之一。 墨尔本大学计算机科学博士,原 IBM 研究员,现在波士顿顾问集 团供职。 康奈尔大学计算机科学博士, 伊利诺伊大学教授。
Richard Helm
Ralph Johnson
士学位授权点。
武汉科技大学
www.wust.edu.cn
设计模式课程
(专业方向) 软件工程 (二级学科) 智能辅助决策支持系统 计算机体系结构 计算机辅助设计 计算机软件与理论 计算机网络与分布式系统 计算机应用 数据库系统与多媒体信息 自然语言处理与机器翻译 算法的设计与计算复杂性 并行计算与petri网
武汉科技大学
www.wust.edu.cn
设计模式发展
软件设计模式的发展
1990年,OOPSLA与ECOOP(欧洲的姐妹会议)联合举办, Erich Gamma和Richard Helm等人开始讨论有关模式的 话题(Bruce Anderson主持),“四人组” 正式成立, 并开始着手进行设计模式的分类整理工作。 1991 年,OOPSLA,Bruce Anderson主持了首次针对设 计模式的研讨会 。 1992 年,OOPSLA ,Anderson再度主持研讨会,模式已 经逐渐成为人们讨论的话题。
武汉科技大学
www.wust.edu.cn
思考
重用第三方算法库时面临的问题 问题 银行业务处理系统 第三方算法库
• 客户端类 如何在既不修改现有接口又不需要算法库源代码的基 础上能够实现第三方算法库的重用是该软件公司开发 如何兼容?
加密类
人员必须面对的问题。
DataOperation
武汉科技大学
武汉科技大学
www.wust.edu.cn
思考
重用第三方算法库时面临的问题 实例说明
• 某软件公司在开发一个银行业务处理系统时需要对其 中的机密数据进行加密处理,通过分析发现,用于加 密的程序已经存在于一个第三方算法库中,但是没有
该算法库的源代码。在系统初始设计阶段,已定义数
据操作接口DataOperation,且该接口已被很多同事 使用,对该接口的修改势必导致大量代码需要产生改 动。
折方式,具体打折方案如下:
• (1) 学生凭学生证可享受票价8折优惠;
• (2) 年龄在10周岁及以下的儿童可享受每张票减免10元的
优惠(原始票价需大于等于20元); • (3) 影院VIP用户除享受票价半价优惠外还可进行积分,积
分累计到一定额度可换取电影院赠送的奖品。
• 该系统在将来可能还要根据需要引入新的打折方式。
现在,除了最常提到的GoF的23种设计模式之外,
不断有各种各样的模式提出来,包括分析模式、
架构模式、过程模式、组织模式、实现模式、反
模式„„
武汉科技大学
www.wust.edu.cn
设计模式发展
软件设计模式的发展
1987年,Kent Beck和Ward Cunningham借鉴Alexander 的模式思想在程序开发中开始应用一些模式 ,在 OOPSLA会议上发表了他们的成果。 (Object-Oriented Programming, Systems, Languages & Applications)是计算机协会(ACM)的一个年度性会 议,主要在美国举办。