一、定义设计模式
首先定义“模式”:模式是在某情境下,针对某问题的某种解决方案。其中:
- 情境:是应用某个模式的情况。
- 问题:是想在某情境下达到的目标。
- 解决方案:是你所追求的一个通用的设计,用来解决约束、达到目标。
“如果你发现自己处于某个情境下,面对着所欲达到的目标被一群约束影响着的问题,然而,你能够应用某个设计,克服这些约束并达到该目标,将你领向某个解决方案。”
二、模式与描述
装饰者------包装一个对象,以提供新的行为
状态--------封装了基于状态的行为,并使用委托在行为之间切换
迭代器------在对象之中游走,而不是暴露集合的实现
外观--------简化一群类的接口
策略--------封装可以互换的行为,并使用委托来决定要是用哪一个
代理--------包装对象,以控制对此对象的访问
工厂方法----由子类决定要创建的具体类是哪一个
适配器------封装对象,并提供不同的接口
观察者------让对象能够在状态改变时被通知
模板方法----由子类决定如何实现一个算法中的步骤
组合--------客户用一致的方式处理对象集合和单个对象
单件--------确保有且只有一个对象被创建
抽象工厂----允许客户创建对象的家族,而无需指定他们的具体类
命令--------封装请求成为对象
三、模式分类
创建型
Singleton
Builder
Prototype
Abstract Factory
Factory Method
行为型
Template Method
Visitor
Mediator
Iterator
Command
Memento
Inetpreter
Observer
Chain of Responsibility
State
Strategy
结构型
Decorator
Proxy
Composite
Facade
Flyweight
Bridge
Adaptor