欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    软件设计模式入门.ppt

    • 资源ID:5018940       资源大小:1.38MB        全文页数:28页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软件设计模式入门.ppt

    设计模式导论,模式与设计模式 描述设计模式 应用设计模式解决问题 选择设计模式 使用设计模式 常用设计模式分析,课程目标,比如要求开发一个绘图程序,用来绘制简单的几何图形。如圆、矩形等,那么在程序中该如何处理这些几何对象呢?,体验项目,该项目使用Simple Factory模式(简单工厂模式)来处理这些几何对象。为这些几何图形定义一个公共的父类和一些公共的方法,类间的关系如图所示:,Shape是一个抽象类,Circle和Rectangle类是Shape的两个具体实现,“工厂”类ShapeFactory用于创建各种几何图形的具体实例。,Christopher Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需再重复相同的工作。,模式与设计模式,一般,模式存在如下的基本要素:,名称:每个模式都有一个独一无二的名称,通过名称来鉴别不同的模式。,问题:模式试图解决的问题。,解决方案:对于某个情景中的问题,模式提供的解决问题的方法。,效果:使用模式后所达到的效果,使用模式的同时研究其约束。,意图:模式的目的。,参与者和协作者:模式所包含的实体。,实现:怎样实现模式。实现是模式的具体表现形式,而不能像模式本身那样被分析。,描述设计模式,我们怎样来描述设计模式呢?采用图形概念吗?图形概念固然很重要、很有用,但这还远远不够。因为它们仅仅简单的表达了类和对象之间的关系,这是设计过程的最终产品。为了设计重用,我们还必须记录决策过程、替代方案等。一般我们用统一的格式来描述设计模式,每一种模式都按以下的模版分成多个部分。每个部分的模版使用统一的信息结构,便于设计模式的学习、比较和使用。,常用的描述模式的格式大致可分为以下部分:,模式名和分类(Pattern Name and Classification):模式名简洁的表达了模式的本质。好的命名非常重要,因为它将会成为你的部分设计术语(词汇)。,意图(Intent):主要描述设计模式的作用?其基本原理和目的是什么?它针对哪些特殊的设计问题?,别名(Byname):如果某个模式有其它的名称,那么该模版部分就指出了该模式的这个名称。,动机(Motivation):指出可能存在的设计问题以及怎样使用该模式中的类和对象来解决该问题的情景。这个情景能帮助你理解对该模式更高层的抽象描述。,适用性(Applicability):指出模式适用于哪些情况?该模式可用于对那些不良的设计进行改进,以及怎么才能识别这种情况?,结构(Structure):指出基于对象模型技术(OMT)对该模式的图形表示,以及使用交互图(对象间请求流程的示意图)来表示对象的请求顺序和协作。,参与者(Participants):指出参与该模式的类和对象以及各自的职责。,协作(Collaboration):指出参与者为了完成各自的职责应该如何协作。,结果(Consequences):指出模式达成目标的程度、应用该模式的结果和费用,以及系统结构是否允许你改变其中的某个或某些方面,具体是哪些方面?,实现(Implementation):指出在实现该模式时,应当具备的前提和技术,以及该模式有什么缺陷?是否具有与语言无关的特性?,例程(Sample Code):指出如何使用编程语言来实现该模式。,已知应用(Known Uses):指出实际系统中已经使用了该模式的例子,一般至少包括两个不同领域的例子。,相关模式(Related Patterns):指出哪些设计模式与该模式紧密相关?有什么重要的不同?以及该模式应当与哪个或哪些模式一起应用。,对于面向对象设计者经常遇到的一些问题,设计模式可采用多种方法来解决,比如对变化性的封装就是许多设计模式的主题,以下列举了这些问题中的几种。,应用设计模式解决问题,寻找合适的对象,指定对象的接口,描述对象的实现,运行时刻和编译时刻的结构,决定对象的粒度,运用复用机制,设计应支持变化,设计模式可以确保系统能以特定的方式变化,从而避免重新设计。,面向对象程序由对象组成,对象包含数据和方法。对象的内部数据和方法是被封装的,不能被直接访问,它的表示对于对象外部是不可见的,客户只能通过对象的请求执行相应的操作。,寻找合适的对象,面向对象设计最困难的部分是将系统分解成对象集合。因为在分解的同时需要考虑许多因素:封装、粒度、依赖关系、灵活性、性能、演化、复用等等,它们都影响着系统的分解,并且这些因素通常还是互相冲突的。而许多对象都来源于现实世界的分析模型,但是所得到的类通常在现实世界中并不存在。此时设计模式就能确定那些并不明显的抽象和描述这些抽象的对象。,对象在大小和数目上变化极大,能表示任何事物,那么我们怎么来确定一个对象呢?设计模式能很好的处理这个问题。,决定对象的粒度与指定对象的接口,指定对象的接口,决定对象的粒度,对象接口描述了该对象所能接受的全部请求的集合,任何匹配对象接口的请求都可以发送给该对象。对象只有通过它们的接口才能与外部交流,如果不通过对象的接口就无法知道对象的任何情况,也无法请求对象做任何事情。设计模式就能通过确定接口的主要组成成分以及经接口发送的数据类型,来定义接口。而且设计模式也指定了接口之间的关系。,对象的实现是由它的类决定的,类指定了对象的内部数据和方法,通过实例化类来创建对象,该对象被称为该类的实例。而在很多时候却不将变量声明为某个特定的具体类的实例对象,而是让它遵循抽象类所定义的接口。,描述对象的实现,抽象类(abstract class)的主要目的是为它的子类定义公共接口。一个抽象类将把它的部分或全部操作的实现延迟到子类中,因此,一个抽象类不能被实例化。,而当不得不在某个地方实例化具体的类时,设计模式就可以帮你,通过抽象对象的创建过程,在实例化时建立接口和实现的透明连接。,运用复用机制,复用技术主要有:,类继承,委托,参数化类型,对象组合,面向对象系统中功能复用的两种最常用技术是类继承和对象组合(object composition)。委托(delegation)是一种组合方法,它使组合具有与继承同样的复用能力。参数化类型(parameterized type)是一种不常用到的复用技术,类继承和对象组合,类继承是在编译时刻静态定义的,且可直接使用,可以较方便地改变被复用的实现。但是继承在编译时就已经定义了,所以无法在运行时改变从父类继承的实现,更糟的是,父类通常至少定义了部分子类的具体表示。因为继承对子类揭示了其父类的实现细节,所以继承常被认为“破坏了封装性”。,对象组合是通过获得对其他对象的引用而在运行时刻动态定义的。组合要求对象遵守彼此的接口约定,进而要求更仔细地定义接口,而这些接口并不妨碍你将一个对象和其他对象一起使用。,对象组合对系统设计还有另一个作用,即优先使用对象组合有助于你保持每个类被封装,并被集中在单个任务上。,一般在实际中应该优先使用对象组合,而不是类继承。,委托,委托(delegation)是一种组合方法,它使组合具有与继承同样的复用能力。在委托方式下,有两个对象参与处理一个请求,接受请求的对象将操作委托给它的代理者(delegate)。,比如可以在类A中保存一个类B的实例来代理类B的特定操作,这样类A可以复用类B的操作,而不必像类继承那样定义成类B的子类。,委托的主要优点在于它便于运行时刻组合对象操作以及改变这些操作的组合方式。有些设计模式使用了委托,通过改变委托对象来改变委托对象的行为。,注意:委托是对象组合技术的一个特例,它使我们了解到对象组合作为一个代码复用机制也可以替代继承。,参数化类型(parameterized type)也是一种复用技术,它允许在定义一个类型时并不指定该类型所用到的其他所有类型。未经指定的类型在使用时以参数形式提供。,参数化类型,对象组合技术允许在运行时刻改变被组合的行为,但是它存在间接性,效率比较低。继承允许提供操作的缺省实现,并通过子类重定义这些操作。参数化类型允许改变类所用到的类型。但是继承和参数化类型都不能在运行时刻改变。,聚合意味着一个对象包含另一个对象或者是另一个对象的一部分。聚合对象和其所有者具有相同的生命周期。,运行时刻和编译时刻的结构,相识(也称为“关联”或“引用”)意味着一个对象仅仅知道另一个对象。相识的对象可能请求彼此的操作,但是它们不为对方负责。相识是一种比聚合要弱的关系。,是聚合还是相识是由设计者的意图决定的,而不是由显式的语言机制决定的。他们在编译时刻和运行时刻有很大的区别,程序的编译时刻和运行时刻也存在着很大的区别,但代码不能揭示系统工作的全部,而许多设计模式就能显式的记述编译时刻和运行时刻结构的差别。,以下是导致重新设计的几个方面:,对硬件和软件平台的依赖,通过显式地指定一个类来创建对象,对特殊操作的依赖,算法依赖,紧耦合,通过生成子类来扩充功能,对对象表示或实现的依赖,不能方便地对类进行修改,选择设计模式,以下提供几个选择设计模式的参考方法:,研究模式怎样互相关联,考虑设计模式怎样解决设计问题,浏览模式的意图部分,检查重新设计的原因,考虑你的设计过程中哪些是可变的,研究目的相似的模式,使用设计模式,对于设计模式的使用可以从以下几个方面来考虑:,查看代码示例部分,分析该模式代码形式的具体例子,浏览一遍模式,比如模式名、意图、适用性、效果等,研究结构部分、参与者部分和协作部分,定义类,声明它们的接口,建立它们的继承关系,定义代表数据和对象引用的实例变量。识别模式会影响到你的应用中存在的类,做出相应的修改。,定义模式中专用于应用的操作名称,选择模式参与者的名字,使它们在应用上下文中有意义,实现执行模式责任和协作的操作,常用设计模式分析,常用的基本设计模式有23种,可分为三个类型:,创建型设计模式,行为设计模式,结构型设计模式,描述了实例化对象的相关技术,解决了创建对象的有关问题。,描述了在软件系统中组织类和对象的常用方法,避免了一个类被赋予过多职责而破坏类的封装性和信息的隐藏,以及类之间功能重叠的问题。,负责分配对象的职责,为对象间协作建模提供有效的策略。,创建型设计模式,Builder模式:将一个复杂的对象构建与它的表示分离开来,使用同样的构建过程可以创建不同的表示。,Abstract Factory模式:为创建一系列相关的或者相互依赖的对象配置接口,而不必指定它们具体的类。,Factory Method模式:定义了一个创建对象的接口,但是却让子类来决定具体实例化哪一个类。,Prototype模式:使用原型实例指定创建对象的种类,而通过拷贝这个原型实例来创建新的实例。,主要有以下几种:,Singleton模式:保证在运行的应用程序中,一个Class只实例化一次,并提供一个访问它的全局访问点。,在创建型模式中除了Factory Method(工厂方法模式)属于类模式,其他都属于对象模式。,结构型设计模式,Bridge模式:将一个复杂对象的构建与它的表示分离,使得二者可以独立变化。,Adapter模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法一起使用的两个类能够一起使用。,Composite模式:将对象组织到树结构中,可以用来描述整体与部分的关系。,Decorator模式:动态给一个对象增加功能,这些功能可以再动态地撤消。,主要有以下几种:,Facade模式:为一个复杂系统提供了一个简单的接口。即提供一个高层次的接口,使得系统更易于使用。,Bridge模式:给某一个对象提供一个代理对象,并由代理对象控制对原来对象的引用。,Flyweight模式:创建共享对象的一个小型池,以共享的方式高效的支持大量的细粒度对象。,在结构型模式中除了适配器(类Adapter)属于类模式,其他都属于对象模式。,行为设计模式,Command模式:把一个请求或者操作封装到一个对象中,允许请求的一方和发送的一方独立开来。,Chain of Responsibility模式:将很多对象连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求为止。,Interpreter模式:给定一个语言后,该模式可以定义出其文法的一种表示,并同时提供一个解释器。,Iterator模式:分离一个集合对象的遍历行为,抽象出一个迭代器类来负责。,主要有以下几种:,Mediator模式:用一个中介对象来封装一系列的对象交互,使得这些对象不必相互明显作用。从而使它们可以松散耦合。,在结构型模式中除了解释器(Interpreter)模板方法(Template Method)属于类模式,其他都属于对象模式。,Observer模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。,Memento模式:在不破坏封装的前提下,捕获一个对象的内部状态,并外部化,存储起来。,State模式:允许一个对象在其内部状态改变时,改变行为。,Strategy模式:针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。,Template Method模式:为一系列的算法先制定一个顶级算法框架,而将算法的细节留给具体的子类去实现。,Visitor模式:封装一些作用于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构可以保持不变。,程序的实现要求如下:(1)了解Simple Factory模式。(2)使用Simple Factory模式处理几何对象。,实践项目,模式与设计模式 描述设计模式 应用设计模式解决问题 选择设计模式 使用设计模式 常用设计模式分析,本章总结,

    注意事项

    本文(软件设计模式入门.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开