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

上传人:fgh****35 文档编号:245566095 上传时间:2024-10-09 格式:PPT 页数:37 大小:3.26MB
返回 下载 相关 举报
01 C#设计模式-设计模式概述_第1页
第1页 / 共37页
01 C#设计模式-设计模式概述_第2页
第2页 / 共37页
01 C#设计模式-设计模式概述_第3页
第3页 / 共37页
点击查看更多>>
资源描述
标题标题标题,第一级,第二级,第三级,*,www,.,ChinaSA,.,info,D,esign,P,atterns,设计模式概述,刘 伟,(Sunny),weiliu_,大纲,引言,设计模式的诞生与发展,设计模式的定义与分类,GoF,设计模式简介,设计模式的优点,引言,从三个实例说起,实例一:,庞大的跨平台图像浏览系统,实例二:,不够灵活的影院售票系统,实例三:,重用第三方算法库时面临的问题,引言,庞大的跨平台图像浏览系统,实例说明,某软件公司要开发一个,跨平台图像浏览系统,,要求该系统能够显示,BMP,、,JPG,、,GIF,、,PNG,等,多种格式,的文件,并且能够在,Windows,、,Linux,、,Unix,等,多个操作系统,上运行。系统首先将各种格式的文件解析为像素矩阵,(Matrix),,然后将像素矩阵显示在屏幕上,在不同的操作系统中可以调用不同的绘制函数来绘制像素矩阵。,引言,庞大的跨平台图像浏览系统,初始设计方案,引言,庞大的跨平台图像浏览系统,问题,(1),采用了多层继承结构,导致系统中类的个数急剧增加,,具体层的类的个数,=,所支持的图像文件格式数,所支持的操作系统数,(2),系统扩展麻烦,无论是增加新的图像文件格式还是增加新的操作系统,都需要增加大量的具体类,这将,导致系统变得非常庞大,增加运行和维护开销,引言,不够灵活的影院售票系统,实例说明,某软件公司为某电影院开发了一套影院售票系统,在该系统中需要,为不同类型的用户提供不同的电影票打折方式,,具体打折方案如下:,(1),学生凭学生证可享受票价,8,折优惠;,(2),年龄在,10,周岁及以下的儿童可享受每张票减免,10,元的优惠(原始票价需大于等于,20,元);,(3),影院,VIP,用户除享受票价半价优惠外还可进行积分,积分累计到一定额度可换取电影院赠送的奖品。,该系统在将来可能还要根据需要引入新的打折方式。,引言,不够灵活的影院售票系统,初始实现方案,/,电影票类,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;/,如果不满足任何打折要求,则返回原始票价,引言,不够灵活的影院售票系统,问题,(1),MovieTicket,类的,Calculate(),方法非常庞大,,它包含各种打折算法的实现代码,在代码中出现了,较长的条件转移语句,不利于测试和维护,(2),在增加新的打折算法或者对原有打折算法进行修改时必须修改,MovieTicket,类的源代码,,系统的灵活性和可扩展性较差,(,3),算法的复用性差,,如果另一个系统需要重用某些打折算法,只能通过对源代码进行复制粘贴来重用,无法单独重用其中的某个或某些算法,引言,重用第三方算法库时面临的问题,实例说明,某软件公司在开发一个银行业务处理系统时需要对其中的机密数据进行加密处理,通过分析发现,用于加密的程序已经存在于一个第三方算法库中,但是,没有该算法库的源代码,。在系统初始设计阶段,已定义数据操作接口,DataOperation,,且该接口已被很多同事使用,对该接口的修改势必导致大量代码需要产生改动。,引言,重用第三方算法库时面临的问题,问题,如何在,既不修改现有接口,又,不需要算法库源代码,的基础上能够实现第三方算法库的重用是该软件公司开发人员必须面对的问题。,引言,如何解决?,引言,欢迎进入模式世界,!,引言,本讲义配套教材,设计模式的诞生与发展,模式的诞生与定义,模式,(Pattern),起源于,建筑业,而非软件业,模式之父,美国加利佛尼亚大学环境结构中心研究所所长,Christopher Alexander,博士,A Pattern Language:Towns,Buildings,Construction253,个建筑和城市规划模式,模式,Context,(模式可适用的前提条件),Theme,或,Problem,(在特定条件下要解决的目标问题),Solution,(对目标问题求解过程中各种物理关系的记述),设计模式的诞生与发展,Christopher Alexander,设计模式的诞生与发展,模式的诞生与定义,Alexander,给出了关于模式的经典定义:,每个模式都描述了一个,在我们的环境中不断出现的问题,,然后描述了该问题的,解决方案的核心,,通过这种方式,人们可以无数次地,重用那些已有的解决方案,,无须再重复相同的工作,模式,是,在特定环境下,人们解决某类重复出现,问题,的一套成功或有效的,解决方案,。,A,pattern is a successful or efficient,solution,to a recurring,problem,within a,context,.,设计模式的诞生与发展,软件模式概述,20,世纪,80,年代末,软件工程界开始关注,Christopher Alexander,等在这一住宅、公共建筑与城市规划领域的重大突破,“四人组,(,Gang of Four,,,GoF,,分别是,Erich Gamma,Richard Helm,Ralph Johnson,和,John Vlissides,),”于,1994,年归纳发表了,23,种在软件开发中使用频率较高的设计模式,旨在,用模式来统一沟通面向对象方法在分析、设计和实现间的鸿沟,设计模式的诞生与发展,Gang of,Four(GoF),设计模式的诞生与发展,Erich Gamma,苏黎世大学计算机科学博士,是,Eclipse,、,JUnit,等项目的负责人,John Vlissides,斯坦福大学计算机科学博士,原,IBM,研究员,,于,2005,年,11,月,24,日因脑瘤去世,享年,44,岁,Ralph Johnson,墨尔本大学计算机科学博士,原,IBM,研究员,现供职于波士顿顾问集团,Richard Helm,康奈尔大学计算机科学博士,伊利诺伊大学教授,Gang of Four,设计模式的诞生与发展,软件模式概述,软件模式:,在一定条件下的软件开发问题及其解法,问题描述,前提条件(环境或约束条件),解法,效果,设计模式的诞生与发展,软件模式概述,设计模式的诞生与发展,软件模式概述,大三律,(Rule of Three),只有经过,3,个以上不同类型(或不同领域)的系统,的校验,一个解决方案才能从候选模式升格为模式,设计模式的诞生与发展,设计模式的发展,1987,年,,,Kent Beck,和,Ward Cunningham,借鉴,Alexander,的模式思想在程序开发中开始应用一些模式,在,OOPSLA,会议上发表了他们的成果,1990,年,,,OOPSLA,与,ECOOP,联合举办,,Erich Gamma,和,Richard Helm,等人开始讨论有关模式的话题,(Bruce Anderson,主持,),,“四人组”正式成立,并开始着手进行设计模式的分类整理工作,1991,年,,,OOPSLA,,,Bruce Anderson,主持了首次针对设计模式的研讨会,1992,年,,,OOPSLA,,,Anderson,再度主持研讨会,模式已经逐渐成为人们讨论的话题,注,:,OOPSLA(Object-Oriented Programming,Systems,Languages&Applications,,,面向对象编程、系统、语言和应用大会,),,编程语言及软件工程国际顶级会议,,2010,年改为,SPLASH-Systems,Programming,Languages and Applications:Software for Humanity,设计模式的诞生与发展,设计模式的发展,1993,年,,,Kent Beck,和,Grady Booch,赞助了第一次关于设计模式的会议,这个设计模式研究组织发展成为著名的,Hillside Group,研究组,1994,年,,由,Hillside Group,发起,在美国伊利诺伊州,(Illinois),的,Allerton Park,召开了第,1,届关于面向对象模式的世界性会议,名为,PLoP(Pattern Languages of Programs,编程语言模式会议,),,简称,PLoP94,1995,年,,,PLoP95,仍在伊利诺伊州的,Allerton Park,举行,“四人组”出版了,设计模式:可复用面向对象软件的基础,(,Design Patterns:Elements of Reusable Object-Oriented Software,),一书,本书成为,1995,年最抢手的面向对象书籍,也成为设计模式的经典书籍,设计模式的诞生与发展,设计模式的发展,从,1995,年至今,设计模式在软件开发中得以广泛应用,在,Sun,的,Java SE/Java EE,平台,和,Microsoft,的,.NET,平台,设计中应用了大量的设计模式,轻量级框架:,Struts,、,Spring,、,Hibernate,、,JUnit,、,NHibernate,、,NUnit,语言:,C+,、,Java,、,C#,、,Objective-C,、,VB.net,、,Smalltalk,、,PHP,、,Delphi,、,JavaScript,、,Ruby,得到越来越多的企业和高校的关注与重视,越来越多的书籍和网站,设计模式的定义与分类,设计模式的定义,设计模式,(Design Pattern),一套,被反复使用的,、,多数人知晓的,、,经过分类编目的,、,代码设计经验的,总结,是一种用于对软件系统中不断重现的设计问题的,解决方案,进行,文档化,的技术,是一种,共享专家设计经验,的技术,目的:,为了可重用代码,、,让代码更容易被他人理解,、,提高代码可靠性,设计模式的定义与分类,设计模式的定义,设计模式是,在特定环境下,为解决,某一通用软件设计问题,提供的,一套定制的解决方案,,该方案描述了对象和类之间的相互作用。,Design patterns are descriptions of communicating objects and classes that are customized to,solve,a general,design,problem,in a particular,context,.,设计模式的定义与分类,设计模式的基本要素,设计模式一般包含模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式等基本要素,,4,个关键要素,如下:,模式名称,(Pattern Name),问题,(Problem),解决方案,(Solution),效果,(Consequences),设计模式的定义与分类,设计模式的分类,根据,目的,(模式是用来做什么的)可分为,创建型,(Creational),,,结构型,(Structural),和,行为型,(Behavioral),三类:,创建型模式,主要用于,创建对象,结构型模式,主要用于,处理类或对象的组合,行为型模
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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