设计模式复习提纲
- 格式:doc
- 大小:457.50 KB
- 文档页数:16
设计模式复习提纲
第一章
1.状态图得定义
状态图用来描述一个特定对象得所有可能状态及其引起状态转移得事件.
第二章
1.软件得可维护性与可复用性(?)
软件可维护性,即维护人员对该软件进行维护得难易程度,具体包括理解、改正、改动与改进该软件得难易程度.
可复用性:复用又叫重用,就是重复使用得意思.
2.面向对象设计原则
(1)单一职责原则
(2)开闭原则
(3)里氏代换原则
(4)依赖倒转原则
(5)接口隔离原则
(6)合成复用原则
(7)迪米特法则
3、单一职责原则定义
单一职责原则定义:一个对象应该只包含单一得职责,并且该职责被完整地封装在一个类中.
另一种定义:就一个类而言,应该仅有一个引起它变化得原因.
4、开闭原则定义
开闭原则定义:一个软件实体应当对扩展开放,对修改关闭。
5、里氏代换原则定义
里氏代换原则有两种定义方式.
第一种定义方式相对严格,其定义如下:
如果对每一个类型为S得对象o1,都有类型为T得对象o2,使得以T定义得所有程序P在所有得对象o1都代换成o2时,程序P得行为没有变化,那么类型S就是类型T得子类型.
第二种更容易理解得定义方式如下:
所有引用基类(父类)得地方必须能透明地使用其子类得对象.
6、依赖倒转原则定义
依赖倒转原则定义:高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象.
另一种表述为:要针对接口编程,不要针对实现编程。
7、接口隔离原则定义
接口隔离原则定义:客户端不应该依赖那些它不需要得接口。注意:在该定义中得接口指得就是所定义得方法。
另一种定义方法:一旦一个接口太大,则需要将它分割成一些更细小得接口,使用该接口得客户端仅需知道与之相关得方法即可。
8、合成复用原则定义
合成复用原则,又称为组合/聚合复用原则,其定义如下:尽量使用对象组合,而不就是继承来达到复用得目得。
9、迪米特法则定义
迪米特法则,又称为最少知识原则,它有多种定义方法,其中几种典型定义如下:
(1) 不要与“陌生人”说话。
(2) 只与您得直接朋友通信。
(3) 每一个软件单位对其她得单位都只有最少得知识,而且局限于那些与本单位密切相关得软件单位.
第三章
1.模式得定义
每个模式都描述了一个在我们得环境中不断出现得问题,然后描述了该问题得解决方案得核心,通过这种方式,我们可以无数次地重用那些已有得解决方案,无需再重复相同得工作。可以用一句话简单表示为: 模式就是在特定环境中解决问题得一种方案。
2.设计模式得定义
设计模式就是一套被反复使用、多数人知晓得、经过分类编目得、代码设计经验得总结,使用设计模式就是为了可重用代码、让代码更容易被她人理解、保证代码可靠性.
3.设计模式得基本要素
设计模式一般有如下几个基本要素:模式名称、问题、目得、解决方案、效果、实例代码与相关设计模式,其中得关键元素包括以下四个方面:模式名称、问题、解决方案、效果。
4.设计模式得分类
(1)根据其目得(模式就是用来做什么得)可分为创建型、结构型与行为型三种:
①创建型模式主要用于创建对象。
②结构型模式主要用于处理类或对象得组合。
③行为型模式主要用于描述对类或对象怎样交互与怎样分配职责。
(2)根据范围,即模式主要就是用于处理类之间关系还就是处理对象之间得关系,可分为类模式与对象模式两种:
①类模式处理类与子类之间得关系,这些关系通过继承建立,在编译时刻就被确定下来,就是属于静态得。
②对象模式处理对象间得关系,这些关系在运行时刻变化,更具动态性。
5.GoF设计模式简介
GoF 最先将模式得概念引入软件工程领域,她们归纳发表了23种在软件开发中使用频率较高得设计模式,旨在用模式来统一沟通面向对象方法在分析、设计与实现间得鸿沟.
6.设计模式得优点
设计模式就是从许多优秀得软件系统中总结出得成功得、能够实现可维护性复用得设计
方案,使用这些方案将避免我们做一些重复性得工作,而且可以设计出高质量得软件系统.设计模式得主要优点如下:
(1)设计模式融合了众多专家得经验,并以一种标准得形式供广大开发人员所用,它提供了一套通用得设计词汇与一种通用得语言以方便开发人员之间沟通与交流,使得设计方案更加通俗易懂.对于使用不同编程语言得开发与设计人员可以通过设计模式来交流系统设计方案,每一个模式都对应一个标准得解决方案,设计模式可以降低开发人员理解系统得复杂度。
(2)设计模式使人们可以更加简单方便地复用成功得设计与体系结构,将已证实得技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式使得重用成功得设计更加容易,并避免那些导致不可重用得设计方案。
(3)设计模式使得设计方案更加灵活,且易于修改。
(4)设计模式得使用将提高软件系统得开发效率与软件质量,且在一定程度上节约设计成本。
(5)设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读与学习现有类库与其她系统中得源代码,另一方面还可以提高软件得设计水平与代码质量。
补充:7、设计模式主题:复用与扩展.
8、设计模式基本原则(?)
同面向对象设计原则.
广义工厂模式包括:简单工厂模式、工厂方法模式、抽象工厂模式.
第四章 简单工厂模式——不就是GoF23种模式中得一员
补充:创建型模式概述:
创建型模式对类得实例化过程进行了抽象,能够将软件模块中对象得创建与对象得使用分离.创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大得灵活性。创建型模式隐藏了类得实例得创建细节,通过隐藏对象如何被创建与组合在一起达到使整个系统独立得目得。
1.定义:
简单工厂模式:又称为静态工厂方法模式,它属于类创建型模式。在简单工厂模式中,可以根据参数得不同返回不同类得实例.简单工厂模式专门定义一个类来负责创建其她类得实例,被创建得实例通常都具有共同得父类。
2.结构图:
3.主要优缺点:
简单工厂模式最大得优点在于实现对象得创建与对象得使用分离,将对象得创建交给专门
得工厂类负责;但就是其最大得缺点在于工厂类不够灵活,增加新得具体产品需要修改工厂类得判断逻辑代码,而且产品较多时,工厂方法代码将会非常复杂。
第五章 工厂方法模式
1.定义:
工厂方法模式又称为工厂模式,也叫虚拟构造器模式或者多态工厂模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象得公共接口,而工厂子类则负责生成具体得产品对象,这样做得目得就是将产品类得实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。
2.结构图:
return new ConcreteProduct();<>ConcreteProductProductConcreteFactory+factoryMethod ()...: ProductFactory+factoryMethod ()...: Product
3.主要优缺点:
工厂方法模式得主要优点就是增加新得产品类时无须修改现有系统,并封装了产品对象得创建细节,系统具有良好得灵活性与可扩展性;其缺点在于增加新产品得同时需要增加新得工厂,导致系统类得个数成对增加,在一定程度上增加了系统得复杂性。
第六章 抽象工厂模式
1.定义:
抽象工厂模式:提供一个创建一系列相关或相互依赖对象得接口,而无须指定它们具体得类。抽象工厂模式又称为Kit模式,属于对象创建型模式.
2.结构图:
3.主要优缺点:
抽象工厂模式得主要优点就是隔离了具体类得生成,使得客户并不需要知道什么被创建,而且每次可以通过具体工厂类创建一个产品族中得多个对象,增加或者替换产品族比较方便,增加新得具体工厂与产品族很方便;主要缺点在于增加新得产品等级结构很复杂,需要修改抽象工厂与所有得具体工厂类,对“开闭原则"得支持呈现倾斜性.
第七章 建造者模式
1.定义:
建造者模式:将一个复杂对象得构建与它得表示分离,使得同样得构建过程可以创建不同得表示。建造者模式就是一步一步创建一个复杂得对象,它允许用户只通过指定复杂对象得类型与内容就可以构建它们,用户不需要知道内部得具体构建细节。建造者模式属于对象创建型模式.根据中文翻译得不同,建造者模式又可以称为生成器模式.
2.结构图:
builderbuilder.buildPartA();builder.buildPartB();builder.buildPartC();return builder.getResult();Director-builder: Builder+construct ()...Builder++++buildPartA ()buildPartB ()buildPartC ()getResult ()...ConcreteBuilder++++buildPartA ()buildPartB ()buildPartC ()getResult ()...Product
3.主要优缺点:
建造者模式得主要优点在于客户端不必知道产品内部组成得细节,将产品本身与产品得创建过程解耦,使得相同得创建过程可以创建不同得产品对象,每一个具体建造者都相对独立,而与其她得具体建造者无关,因此可以很方便地替换具体建造者或增加新得具体建造者,符合“开闭原则”,还可以更加精细地控制产品得创建过程;其主要缺点在于由于建造者模
式所创建得产品一般具有较多得共同点,其组成部分相似,因此其使用范围受到一定得限制,如果产品得内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。
第八章 原型模式
1.定义:
原型模式:原型模式就是一种对象创建型模式,用原型实例指定创建对象得种类,并且通过复制这些原型创建新得对象。原型模式允许一个对象再创建另外一个可定制得对象,无须知道任何创建得细节.原型模式得基本工作原理就是通过将一个原型对象传给那个要发动创建得对象,这个要发动创建得对象通过请求原型对象拷贝原型自己来实现创建过程。
2.结构图:
prototypeClient--prototypecopy: Prototype: Prototype+operation ().........copy=prototype.clone();......return copy of self;Prototype+clone ()...: PrototypeConcretePrototypeA+clone ()...: PrototypeConcretePrototypeB+clone ()...: Prototype
3.主要优缺点:
原型模式最大得优点在于可以快速创建很多相同或相似得对象,简化对象得创建过程,还可以保存对象得一些中间状态;其缺点在于需要为每一个类配备一个克隆方法,因此对已有类进行改造比较麻烦,需要修改其源代码,并且在实现深克隆时需要编写较为复杂得代码。