复习设计模式有两周了,有必要重新把设计模式的整体结构梳理一下,在此摘录刘伟老师的教材中部分知识点,做个笔记。
一、设计模式的分类
根据其
目的
(模式是用来做什么的)可分为
创建型
(Creational)
,
结构型
(Structural)
和
行为型
(Behavioral)
三种:
•
创建型模式主要用于
创建对象
。
•
结构型模式主要用于
处理类或对象的组合
。
•
行为型模式主要用于
描述对类或对象怎样交互和怎样分配职责
。
根据
范围
,即模式主要是用于处理类之间关系还是处理
对象之间的关系,可分为
类模式
和
对象模式
两种:
•
类模式
处理类和子类之间的关系
,这些关系通过继承建立,在编译时刻就被确定下来,是属于
静态
的。
•
对象模式
处理对象间的关系
,这些关系在运行时刻变化,更具
动态
性。
二、GoF设计模式
创建型模式
- 抽象工厂模式(Abstract Factory)
- 建造者模式(Builder)
- 工厂方法模式(Factory Method)
- 原型模式(Prototype)
- 单例模式(Singleton)
结构型模式
- 适配器模式(Adapter)
- 桥接模式(Bridge)
- 组合模式(Composite)
- 装饰模式(Decorator)
- 外观模式(Facade)
- 享元模式(Flyweight)
- 代理模式(Proxy)
行为型模式
- 职责链模式(Chain of Responsibility)
- 命令模式(Command)
- 解释器模式(Interpreter)
- 迭代器模式(Iterator)
- 中介者模式(Mediator)
- 备忘录模式(Memento)
- 观察者模式(Observer)
- 状态模式(State)
- 策略模式(Strategy)
- 模板方法模式(Template Method)
- 访问者模式(Visitor)
三、创建型模式
创建型模式
(Creational Pattern)
对类的实例化过程进
行了抽象,能够
将软件模块中对象的创建和对象的使用
分离
。为了使软件的结构更加清晰,外界对于这些对象
只需要知道它们共同的接口,而不清楚其具体的实现细
节,使整个系统的设计更加符合单一职责原则。
创建型模式在
创建什么
(What)
,
由谁创建
(Who)
,
何
时创建
(When)
等方面都为软件设计者提供了尽可能大
的灵活性。创建型模式
隐藏了类的实例的创建细节,通
过隐藏对象如何被创建和组合在一起达到使整个系统独
立的目的
。
四、结构型模式
其描述
如何将类或者对
象结合在一起形成更大的结构
,就像搭积木,可以通过
简单积木的组合形成复杂的、功能更为强大的结构。
结构型模式可以分为
类结构型模式
和
对象结构型模式
:
•
类结构型模式关心类的组合
,由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系。
•
对象结构型模式关心类与对象的组合,通过关联关系使得在一个类中定义另一个类的实例对象,然后通过该对象调用其方法。
根据“合成复用原则”,在系统中尽量使用关联关系来替代继承关系,因此大部分结构型模式都是
对象结构型模式
。
五、行为型模式
行为型模式
(Behavioral Pattern)
是对
在不
同的对象之间划分责任和算法的抽象化
。
行为型模式不仅仅关注类和对象的结构,而
且
重点关注它们之间的相互作用
。
通过行为型模式,可以更加清晰地
划分类与
对象的职责
,并
研究系统在运行时实例对象
之间的交互
。在系统运行时,对象并不是孤
立的,它们可以通过相互通信与协作完成某
些复杂功能,一个对象在运行时也将影响到
其他对象的运行。
行为型模式分为
类行为型模式
和
对象行为型模式
两种:
•
类行为型模式
:类的行为型模式
使用继承关系在几个类之间分配行为
,类行为型模式主要通过多态等方式来分配父类与子类的职责。
•
对象行为型模式
:对象的行为型模式则
使用对象的聚合关联关系来分配行为
,对象行为型模式主要是通过对象关联等方式来分配两个或多个类的职责。根据“合成复用原则”,系统中要尽量使用关联关系来取代继承关系,因此大部分行为型设计模式都属于对象行为型设计模式