设计模式---->经典设计模式一览

一、模式(Pattern)

定义

我们处理大量问题时,在很多不同的问题中重复出现的一种性质,它使得我们可以使用一种方法来描述问题实质并用本质上相同,但细节永不会重复的方法去解决,这种性质就叫模式。

一个围棋下得好的人知道,好的“形”对于围棋非常重要。形是棋子在棋盘上的几何形状的抽象化。形就是模式(Pattern),也是人脑把握和认识外界的关键。

成为模式的条件

1、它可以解决问题。模式不能仅仅反映问题,而必须对问题提出解决方案。
2、它所提出解决方案是正确的,而且不是很明显的。
3、它必须是涉及软件系统深层的结构的东西,不能仅是对已有的模块的描述。
4、它必须满足人的审美,简洁美观。

二、模式分类

2.1、创立性模式

•创立性模式(CreationalPatterns)是类在实例化时使用的模式。

•当一些系统在创立对象时,需要动态地决定怎样创立对象,创立哪些对象

•创立性模式告诉我们怎样构造和包装这些动态的决定。

2.2、结构性模式

•结构性模式描述类和对象怎样结合在一起成为较大的结构。

•结构性模式描述两种不同的东西:类与类的实例。

2.3、行为模式

•行为模式设计到算法和对象职责间的分配。

•行为模式不仅是关于类和对象的,而且还描述它们之间的作用。

•这些模式刻画了运行时刻难以跟踪的复杂的控制流,它帮助软件设计者在设计软件的时候把注意力从控制流转移到对象间的联系上。

 

 

创立型

结构型

行为型

工厂方法(Factory Method)

适配器(Adapter)

解释器(Interpreter)

模板方法(Template Method)

对象

抽象工厂(Abstract Factory)

生成器(Builder)

原型(Prototype)

单态(Singleton)

 

桥接(Bridge)

组成(Composite)

装饰(Decorator)

外观(Facade)

享元(Flyweight)

代理(Proxy)

责任链(Chain of Responsibility)

命令(Command)

迭代器(Iterator)

中介者(Mediator)

备忘录(Memento)

观察者(Observer)

状态(State)

策略(Strategy)

访问者(Visitor)

 设计模式建议学习顺序

学习顺序

设计模式

常用程度

适用层次

引入时机

结构复杂度

变化

实现

体现的原则

1

Factory Method

很常用

代码级

编码时

简单

子类的实例化

对象的创建工作延迟到子类

开闭原则

2

Singleton

很常用

代码级、应用级

设计时、编码时

简单

唯一实例

封装对象产生的个数

3

Facade

很常用

应用级、构架级

设计时、编码时

简单

子系统的高层接口

封装子系统

开闭原则

4

Template Method

很常用

代码级

编码时、重构时

简单

算法子步骤的变化

封装算法结构

依赖倒置原则

5

Abstract Factory

比较常用

应用级

设计时

比较复杂

产品家族的扩展

封装产品族系列内容的创建

开闭原则

6

Composite

比较常用

代码级

编码时、重构时

比较复杂

复杂对象接口的统一

统一复杂对象的接口

里氏代换原则

7

Proxy

比较常用

应用级、构架级

设计时、编码时

简单

对象访问的变化

封装对象的访问过程

里氏代换原则

8

Command

比较常用

应用级

设计时、编码时

比较简单

请求的变化

封装行为对对象

开闭原则

9

Observer

比较常用

应用级、构架级

设计时、编码时

比较简单

通讯对象的变化

封装对象通知

开闭原则

10

Strategy

比较常用

应用级

设计时

一般

算法的变化

封装算法

里氏代换原

11

Builder

一般

代码级

编码时

一般

对象组建的变化

封装对象的组建过程

开闭原则

12

Adapter

一般

代码级

重构时

一般

对象接口的变化

接口的转换

13

Bridge

一般

代码级

设计时、编码时

一般

对象的多维度变化

分离接口以及实现

开闭原则

14

Decorator

一般

代码级

重构时

比较复杂

对象的组合职责

在稳定接口上扩展

开闭原则

15

Iterator

一般

代码级、应用级

编码时、重构时

比较简单

对象内部集合的变化

封装对象内部集合的使用

单一职责原则

16

Mediator

一般

应用级、构架级

编码时、重构时

一般

对象交互的变化

封装对象间的交互

开闭原则

17

Memento

一般

代码级

编码时

比较简单

状态的辅助保存

封装对象状态的变化

接口隔离原则

18

State

一般

应用级

设计时、编码时

一般

对象状态的变化

封装与状态相关的行为

单一职责原则

19

Visitor

一般

应用级

设计时

比较复杂

对象操作变化

封装对象操作变化

开闭原则

20

Prototype

不太常用

应用级

编码时、重构时

比较简单

实例化的类

封装对原型的拷贝

依赖倒置原则

21

Flyweight

不太常用

代码级、应用级

设计时

一般

系统开销的优化

封装对象的获取

22

Chain of Resp.

不太常用

应用级、构架级

设计时、编码时

比较复杂

对象的请求过程

封装对象的责任范围

23

Interpreter

不太常用

应用级

设计时

比较复杂

领域问题的变化

封装特定领域的变化

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值