软件设计模式入门.ppt
《软件设计模式入门.ppt》由会员分享,可在线阅读,更多相关《软件设计模式入门.ppt(28页珍藏版)》请在三一办公上搜索。
1、设计模式导论,模式与设计模式 描述设计模式 应用设计模式解决问题 选择设计模式 使用设计模式 常用设计模式分析,课程目标,比如要求开发一个绘图程序,用来绘制简单的几何图形。如圆、矩形等,那么在程序中该如何处理这些几何对象呢?,体验项目,该项目使用Simple Factory模式(简单工厂模式)来处理这些几何对象。为这些几何图形定义一个公共的父类和一些公共的方法,类间的关系如图所示:,Shape是一个抽象类,Circle和Rectangle类是Shape的两个具体实现,“工厂”类ShapeFactory用于创建各种几何图形的具体实例。,Christopher Alexander给出的经典定义是:
2、每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需再重复相同的工作。,模式与设计模式,一般,模式存在如下的基本要素:,名称:每个模式都有一个独一无二的名称,通过名称来鉴别不同的模式。,问题:模式试图解决的问题。,解决方案:对于某个情景中的问题,模式提供的解决问题的方法。,效果:使用模式后所达到的效果,使用模式的同时研究其约束。,意图:模式的目的。,参与者和协作者:模式所包含的实体。,实现:怎样实现模式。实现是模式的具体表现形式,而不能像模式本身那样被分析。,描述设计模式,我们怎样来描述设计模式呢?采用图形
3、概念吗?图形概念固然很重要、很有用,但这还远远不够。因为它们仅仅简单的表达了类和对象之间的关系,这是设计过程的最终产品。为了设计重用,我们还必须记录决策过程、替代方案等。一般我们用统一的格式来描述设计模式,每一种模式都按以下的模版分成多个部分。每个部分的模版使用统一的信息结构,便于设计模式的学习、比较和使用。,常用的描述模式的格式大致可分为以下部分:,模式名和分类(Pattern Name and Classification):模式名简洁的表达了模式的本质。好的命名非常重要,因为它将会成为你的部分设计术语(词汇)。,意图(Intent):主要描述设计模式的作用?其基本原理和目的是什么?它针对
4、哪些特殊的设计问题?,别名(Byname):如果某个模式有其它的名称,那么该模版部分就指出了该模式的这个名称。,动机(Motivation):指出可能存在的设计问题以及怎样使用该模式中的类和对象来解决该问题的情景。这个情景能帮助你理解对该模式更高层的抽象描述。,适用性(Applicability):指出模式适用于哪些情况?该模式可用于对那些不良的设计进行改进,以及怎么才能识别这种情况?,结构(Structure):指出基于对象模型技术(OMT)对该模式的图形表示,以及使用交互图(对象间请求流程的示意图)来表示对象的请求顺序和协作。,参与者(Participants):指出参与该模式的类和对象以
5、及各自的职责。,协作(Collaboration):指出参与者为了完成各自的职责应该如何协作。,结果(Consequences):指出模式达成目标的程度、应用该模式的结果和费用,以及系统结构是否允许你改变其中的某个或某些方面,具体是哪些方面?,实现(Implementation):指出在实现该模式时,应当具备的前提和技术,以及该模式有什么缺陷?是否具有与语言无关的特性?,例程(Sample Code):指出如何使用编程语言来实现该模式。,已知应用(Known Uses):指出实际系统中已经使用了该模式的例子,一般至少包括两个不同领域的例子。,相关模式(Related Patterns):指出哪
6、些设计模式与该模式紧密相关?有什么重要的不同?以及该模式应当与哪个或哪些模式一起应用。,对于面向对象设计者经常遇到的一些问题,设计模式可采用多种方法来解决,比如对变化性的封装就是许多设计模式的主题,以下列举了这些问题中的几种。,应用设计模式解决问题,寻找合适的对象,指定对象的接口,描述对象的实现,运行时刻和编译时刻的结构,决定对象的粒度,运用复用机制,设计应支持变化,设计模式可以确保系统能以特定的方式变化,从而避免重新设计。,面向对象程序由对象组成,对象包含数据和方法。对象的内部数据和方法是被封装的,不能被直接访问,它的表示对于对象外部是不可见的,客户只能通过对象的请求执行相应的操作。,寻找合
7、适的对象,面向对象设计最困难的部分是将系统分解成对象集合。因为在分解的同时需要考虑许多因素:封装、粒度、依赖关系、灵活性、性能、演化、复用等等,它们都影响着系统的分解,并且这些因素通常还是互相冲突的。而许多对象都来源于现实世界的分析模型,但是所得到的类通常在现实世界中并不存在。此时设计模式就能确定那些并不明显的抽象和描述这些抽象的对象。,对象在大小和数目上变化极大,能表示任何事物,那么我们怎么来确定一个对象呢?设计模式能很好的处理这个问题。,决定对象的粒度与指定对象的接口,指定对象的接口,决定对象的粒度,对象接口描述了该对象所能接受的全部请求的集合,任何匹配对象接口的请求都可以发送给该对象。对
8、象只有通过它们的接口才能与外部交流,如果不通过对象的接口就无法知道对象的任何情况,也无法请求对象做任何事情。设计模式就能通过确定接口的主要组成成分以及经接口发送的数据类型,来定义接口。而且设计模式也指定了接口之间的关系。,对象的实现是由它的类决定的,类指定了对象的内部数据和方法,通过实例化类来创建对象,该对象被称为该类的实例。而在很多时候却不将变量声明为某个特定的具体类的实例对象,而是让它遵循抽象类所定义的接口。,描述对象的实现,抽象类(abstract class)的主要目的是为它的子类定义公共接口。一个抽象类将把它的部分或全部操作的实现延迟到子类中,因此,一个抽象类不能被实例化。,而当不得
9、不在某个地方实例化具体的类时,设计模式就可以帮你,通过抽象对象的创建过程,在实例化时建立接口和实现的透明连接。,运用复用机制,复用技术主要有:,类继承,委托,参数化类型,对象组合,面向对象系统中功能复用的两种最常用技术是类继承和对象组合(object composition)。委托(delegation)是一种组合方法,它使组合具有与继承同样的复用能力。参数化类型(parameterized type)是一种不常用到的复用技术,类继承和对象组合,类继承是在编译时刻静态定义的,且可直接使用,可以较方便地改变被复用的实现。但是继承在编译时就已经定义了,所以无法在运行时改变从父类继承的实现,更糟的是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 模式 入门
链接地址:https://www.31ppt.com/p-5018940.html