01 C#设计模式-设计模式概述.ppt

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

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

1、www.ChinaSA.infoDDesign esign P Patternsatterns设计模式概述设计模式概述设计模式概述设计模式概述刘刘 伟伟(Sunny)weiliu_www.ChinaSA.info大纲w引言w设计模式的诞生与发展w设计模式的定义与分类wGoF设计模式简介w设计模式的优点www.ChinaSA.info引言w从三个实例说起 实例一:实例一:庞大的跨平台图像庞大的跨平台图像浏览系统浏览系统 实例二:实例二:不够灵活的影院售不够灵活的影院售票系统票系统 实例三:实例三:重用第三方算法库重用第三方算法库时面临的问题时面临的问题www.ChinaSA.info引言w庞大的

2、跨平台图像浏览系统实例说明实例说明某软件公司要开发一个跨平台图像浏览系统,要求该系统能够显示BMP、JPG、GIF、PNG等多种格式的文件,并且能够在Windows、Linux、Unix等多个操作系统上运行。系统首先将各种格式的文件解析为像素矩阵(Matrix),然后将像素矩阵显示在屏幕上,在不同的操作系统中可以调用不同的绘制函数来绘制像素矩阵。www.ChinaSA.info引言w庞大的跨平台图像浏览系统初始设计方案初始设计方案www.ChinaSA.info引言w庞大的跨平台图像浏览系统问题问题(1)采用了多层继承结构,导致系统中类的个数急剧增加,具体层的类的个数=所支持的图像文件格式数所

3、支持的操作系统数(2)系统扩展麻烦,无论是增加新的图像文件格式还是增加新的操作系统,都需要增加大量的具体类,这将导致系统变得非常庞大,增加运行和维护开销www.ChinaSA.info引言w不够灵活的影院售票系统实例说明实例说明某软件公司为某电影院开发了一套影院售票系统,在该系统中需要为不同类型的用户提供不同的电影票打折方式,具体打折方案如下:(1)学生凭学生证可享受票价8折优惠;(2)年龄在10周岁及以下的儿童可享受每张票减免10元的优惠(原始票价需大于等于20元);(3)影院VIP用户除享受票价半价优惠外还可进行积分,积分累计到一定额度可换取电影院赠送的奖品。该系统在将来可能还要根据需要引

4、入新的打折方式。www.ChinaSA.info引言w不够灵活的影院售票系统初始实现方案初始实现方案/电电影票影票类类class MovieTicket private double price;/电影票价格 private string type;/电影票类型 /计计算打折之后的票价算打折之后的票价 public double Calculate()/学生票折后票价学生票折后票价计计算算 if(this.type.Equals(student)Console.WriteLine(学生票:学生票:);return this.price*0.8;/儿童票折后票价儿童票折后票价计计算算 else

5、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.ChinaSA.info引

6、言w不够灵活的影院售票系统问题问题(1)MovieTicket类的Calculate()方法非常庞大,它包含各种打折算法的实现代码,在代码中出现了较长的条件转移语句,不利于测试和维护(2)在增加新的打折算法或者对原有打折算法进行修改时必须修改MovieTicket类的源代码,系统的灵活性和可扩展性较差(3)算法的复用性差,如果另一个系统需要重用某些打折算法,只能通过对源代码进行复制粘贴来重用,无法单独重用其中的某个或某些算法www.ChinaSA.info引言w重用第三方算法库时面临的问题实例说明实例说明某软件公司在开发一个银行业务处理系统时需要对其中的机密数据进行加密处理,通过分析发现,用于

7、加密的程序已经存在于一个第三方算法库中,但是没有该算法库的源代码。在系统初始设计阶段,已定义数据操作接口DataOperation,且该接口已被很多同事使用,对该接口的修改势必导致大量代码需要产生改动。www.ChinaSA.info引言w重用第三方算法库时面临的问题问题问题如何在既不修改现有接口又不需要算法库源代码的基础上能够实现第三方算法库的重用是该软件公司开发人员必须面对的问题。www.ChinaSA.info引言如何如何解决解决?www.ChinaSA.info引言欢迎进入欢迎进入模式世界模式世界!www.ChinaSA.info引言本本讲讲义义配配套套教教材材www.ChinaSA.

8、info设计模式的诞生与发展w模式的诞生与定义 模式模式(Pattern)起源于起源于建筑业建筑业而非软件业而非软件业模式之父模式之父美国加利佛尼亚大学环境结构中心研究所所长美国加利佛尼亚大学环境结构中心研究所所长Christopher Alexander博士博士A Pattern Language:Towns,Buildings,Construction253个建筑和城市规划模式个建筑和城市规划模式模式模式Context(模式可适用的前提条件)Theme或Problem(在特定条件下要解决的目标问题)Solution(对目标问题求解过程中各种物理关系的记述)www.ChinaSA.info设

9、计模式的诞生与发展Christopher Alexanderwww.ChinaSA.info设计模式的诞生与发展w模式的诞生与定义 Alexander给出了关于模式的经典定义:给出了关于模式的经典定义:每个模式都描述了一个每个模式都描述了一个在我们的环境中不断出现的在我们的环境中不断出现的问题问题,然后描述了该问题的,然后描述了该问题的解决方案的核心解决方案的核心,通过,通过这种方式,人们可以无数次地这种方式,人们可以无数次地重用那些已有的解决重用那些已有的解决方案方案,无须再重复相同的工作,无须再重复相同的工作 模模式式是是在在特特定定环环境境下下人人们们解解决决某某类类重重复复出出现现问问

10、题题的的一一套套成成功或有效的功或有效的解决方案解决方案。A pattern is a successful or efficient solution to a recurring problem within a context.www.ChinaSA.info设计模式的诞生与发展w软件模式概述 20世纪世纪80年代末,软件工程界开始关注年代末,软件工程界开始关注Christopher Alexander等在这一住宅、公共建筑与城市规划领域的重大等在这一住宅、公共建筑与城市规划领域的重大突破突破“四人组四人组(Gang of Four,GoF,分别是,分别是Erich Gamma,Rich

11、ard Helm,Ralph Johnson和和John Vlissides)”于于1994年归纳发表了年归纳发表了23种在软件开发中使用频率较高的设计种在软件开发中使用频率较高的设计模式,旨在模式,旨在用模式来统一沟通面向对象方法在分析、设计和用模式来统一沟通面向对象方法在分析、设计和实现间的鸿沟实现间的鸿沟www.ChinaSA.info设计模式的诞生与发展Gang ofFour(GoF)www.ChinaSA.info设计模式的诞生与发展Erich Gamma苏黎世大学计算机科学博士,是苏黎世大学计算机科学博士,是Eclipse、JUnit 等项目的负责人等项目的负责人John Vlis

12、sides斯坦福大学计算机科学博士,原斯坦福大学计算机科学博士,原IBM研究研究员,员,于于2005年年11月月24日因脑瘤去世,享年日因脑瘤去世,享年44岁岁Ralph Johnson 墨尔本大学计算机科学博士,原墨尔本大学计算机科学博士,原IBM 研研究员,现供职于波士顿顾问集团究员,现供职于波士顿顾问集团Richard Helm康奈尔大学计算机科学博士,伊利诺伊康奈尔大学计算机科学博士,伊利诺伊大学教授大学教授Gang of Fourwww.ChinaSA.info设计模式的诞生与发展w软件模式概述 软件模式:软件模式:在一定条件下的软件开发问题及其解法在一定条件下的软件开发问题及其解法

13、 问题描述 前提条件(环境或约束条件)解法 效果www.ChinaSA.info设计模式的诞生与发展w软件模式概述www.ChinaSA.info设计模式的诞生与发展w软件模式概述大三律大三律(Rule of Three)只有经过3个以上不同类型(或不同领域)的系统的校验,一个解决方案才能从候选模式升格为模式www.ChinaSA.info设计模式的诞生与发展w设计模式的发展 1987年年,Kent Beck和和Ward Cunningham借鉴借鉴Alexander的模式思想的模式思想在程序开发中开始应用一些模式在程序开发中开始应用一些模式,在,在OOPSLA会议上发表了他们的成果会议上发表

14、了他们的成果1990年年,OOPSLA与与ECOOP联合举办,联合举办,Erich Gamma和和Richard Helm等人开始讨论有关模式的话题等人开始讨论有关模式的话题(Bruce Anderson主持主持),“四人组四人组”正式正式成立,并开始着手进行设计模式的分类整理工作成立,并开始着手进行设计模式的分类整理工作1991 年年,OOPSLA,Bruce Anderson主持了首次针对设计模式的研讨主持了首次针对设计模式的研讨会会 1992 年年,OOPSLA,Anderson再度主持研讨会,模式已经逐渐成为人再度主持研讨会,模式已经逐渐成为人们讨论的话题们讨论的话题注注:OOPSLA

15、(Object-Oriented Programming,Systems,Languages&Applications,面向对象编程、系统、语言和应用大会面向对象编程、系统、语言和应用大会),编程语言及,编程语言及软件工程国际顶级会议,软件工程国际顶级会议,2010年改为年改为SPLASH-Systems,Programming,Languages and Applications:Software for Humanity www.ChinaSA.info设计模式的诞生与发展w设计模式的发展 1993年年,Kent Beck 和和 Grady Booch 赞助了第一次关于设计模式的会赞助了第

16、一次关于设计模式的会议,这个设计模式研究组织发展成为著名的议,这个设计模式研究组织发展成为著名的Hillside Group研究组研究组1994 年年,由,由Hillside Group发起,在美国伊利诺伊州发起,在美国伊利诺伊州(Illinois)的的Allerton Park召开了第召开了第1届关于面向对象模式的世界性会议,名为届关于面向对象模式的世界性会议,名为PLoP(Pattern Languages of Programs,编程语言模式会议编程语言模式会议),简称,简称PLoP941995年年,PLoP95 仍在伊利诺伊州的仍在伊利诺伊州的Allerton Park举行举行,“四人

17、组四人组”出版了出版了设计模式:可复用面向对象软件的基础设计模式:可复用面向对象软件的基础(Design Patterns:Elements of Reusable Object-Oriented Software)一书,本书成为一书,本书成为1995年最抢手的面向对象书籍,也成为设计模式的经典书籍年最抢手的面向对象书籍,也成为设计模式的经典书籍 www.ChinaSA.info设计模式的诞生与发展w设计模式的发展 从从1995年至今,设计模式在软件开发中得以广泛应用,在年至今,设计模式在软件开发中得以广泛应用,在Sun的的Java SE/Java EE平台平台和和Microsoft的的.NE

18、T平台平台设计设计中应用了大量的设计模式中应用了大量的设计模式轻量级框架:Struts、Spring、Hibernate、JUnit、NHibernate、NUnit 语言:C+、Java、C#、Objective-C、VB.net、Smalltalk、PHP、Delphi、JavaScript、Ruby得到越来越多的企业和高校的关注与重视越来越多的书籍和网站www.ChinaSA.info设计模式的定义与分类 w设计模式的定义 设计模式设计模式(Design Pattern)一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结是一种用于对软件系统中不断重现的设计问题的解决方案进

19、行文档化的技术是一种共享专家设计经验的技术目的:为了可重用代码、让代码更容易被他人理解、提高代码可靠性www.ChinaSA.info设计模式的定义与分类 w设计模式的定义 设计设计模式是模式是在特定在特定环环境下境下为为解决解决某一通用某一通用软软件件设计问题设计问题提供提供的的一套定制的解决方案一套定制的解决方案,该该方案描述了方案描述了对对象和象和类类之之间间的相互作的相互作用。用。Design patterns are descriptions of communicating objects and classes that are customized to solve a gen

20、eral design problem in a particular context.www.ChinaSA.info设计模式的定义与分类w设计模式的基本要素 设计模式一般包含模式名称、问题、目的、解决方案、设计模式一般包含模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式等基本要素,效果、实例代码和相关设计模式等基本要素,4个关键个关键要素要素如下:如下:模式名称(Pattern Name)问题(Problem)解决方案(Solution)效果(Consequences)www.ChinaSA.info设计模式的定义与分类w设计模式的分类根据根据目的目的(模式是用来做什么的)可分

21、为(模式是用来做什么的)可分为创建型创建型(Creational),结构型结构型(Structural)和和行为型行为型(Behavioral)三类:三类:创建型模式创建型模式主要用于创建对象 结构型模式结构型模式主要用于处理类或对象的组合 行为型模式行为型模式主要用于描述类或对象如何交互和怎样分配职责www.ChinaSA.info设计模式的定义与分类w设计模式的分类根据根据范围范围,即模式主要是,即模式主要是处理类之间的关系处理类之间的关系还是还是处理对处理对象之间的关系象之间的关系,可分为,可分为类模式类模式和和对象模式对象模式两种:两种:类模式类模式处理类和子类之间的关系,这些关系通过

22、继承建立,在编译时刻就被确定下来,是一种静态关系对象模式对象模式处理对象间的关系,这些关系在运行时变化,更具动态性www.ChinaSA.infoGoF设计模式简介 范范围围目的目的创创建型模式建型模式结结构型模式构型模式行行为为型模式型模式类类模式模式工厂方法模式工厂方法模式(类类)适配器模式)适配器模式解解释释器模式器模式模板方法模式模板方法模式对对象模式象模式抽象工厂模式抽象工厂模式建造者模式建造者模式原型模式原型模式单单例模式例模式(对对象)适配器模式象)适配器模式桥桥接模式接模式组组合模式合模式装装饰饰模式模式外外观观模式模式享元模式享元模式代理模式代理模式职责链职责链模式模式命令模

23、式命令模式迭代器模式迭代器模式中介者模式中介者模式备备忘忘录录模式模式观观察者模式察者模式状状态态模式模式策略模式策略模式访问访问者模式者模式www.ChinaSA.infoGoF设计模式简介 w创建型模式抽象工厂模式抽象工厂模式(Abstract Factory)建造者模式建造者模式(Builder)工厂方法模式工厂方法模式(Factory Method)原型模式原型模式(Prototype)单例模式单例模式(Singleton)www.ChinaSA.infoGoF设计模式简介 w结构型模式适配器模式适配器模式(Adapter)桥接模式桥接模式(Bridge)组合模式组合模式(Compos

24、ite)装饰模式装饰模式(Decorator)外观模式外观模式(Facade)享元模式享元模式(Flyweight)代理模式代理模式(Proxy)www.ChinaSA.infoGoF设计模式简介 w行为型模式职责链模式职责链模式(Chain of Responsibility)命令模式命令模式(Command)解释器模式解释器模式(Interpreter)迭代器模式迭代器模式(Iterator)中介者模式中介者模式(Mediator)备忘录模式备忘录模式(Memento)观察者模式观察者模式(Observer)状态模式状态模式(State)策略模式策略模式(Strategy)模板方法模式模板

25、方法模式(Template Method)访问者模式访问者模式(Visitor)www.ChinaSA.info设计模式的优点 w融合了众多专家的经验,并以一种标准的形式供广大开发人员所用w提供了一套通用的设计词汇和一种通用的语言,以方便开发人员之间进行沟通和交流,使得设计方案更加通俗易懂w让人们可以更加简单方便地复用成功的设计和体系结构w使得设计方案更加灵活,且易于修改w将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本w有助于初学者更深入地理解面向对象思想,方便阅读和学习现有类库与其他系统中的源代码,还可以提高软件的设计水平和代码质量www.ChinaSA.infoENDEND

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

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

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

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