文章目录
行为型
责任链(Chain Of Responsibility)
定义
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象形成一条链,并沿着这条链发送该请求,直到有一个对象处理它为止。
责任链模式有点像JVM的双亲委派模型
命令
定义
将命令封装成对象中,具有以下作用:
- 使用命令来参数化其他对象
- 将命令放入队列中进行排队
- 将命令的操作记录到日志中
- 支持可撤销的操作
解释器(Interpreter)
定义
为语言创建解释器,通常由语言的语义和语法分析来定义
迭代器(Iterator)
定义
提供一种顺序访问聚合对象元素的方法,并且不暴露聚合对象的内部表示
中介者(Mediator)
定义
集中相关对象之间复杂的沟通和控制方式
备忘录(Memento)
定义
在不违反封装的情况下获得对象的内部状态,从而在需要时可以将对象恢复到最初状态
观察者模式(Observer)
定义
定义对象之间的一对多依赖,当一个对象状态改变时,它的所有依赖都会收到通知并且自动更新状态。主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。
状态(State)
定义
允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它所属的类。
策略(Strategy)
定义
定义一系列算法,封装每个算法,并使它们可以呼唤。
策略模式可以让算法独立于它的客户端。
模板方法(Template Method)
定义
定义算法框架,并将一些步骤的实现延迟到子类。
通过模板方法,子类可以重新定义算法的某些步骤,而不用改变算法的结构。
访问者(Visitor)
定义
为一个对象结构(比如组合结构)增加新能力。
Class Diagram
- Visitor:访问者,为每一个 ConcreteElement 声明一个 visit 操作
- ConcreteVisitor:具体访问者,存储遍历过程中的累计结果
- ObjectStructure:对象结构,可以是组合结构,或者是一个集合。
空对象(Null)
定义
使用什么都不做的空对象来代替Null。
一个方法返回Null,意味着方法的调用端需要去检查返回值是否为NULL,这么做会导致非常多的冗余的检查代码。并且如果某一个调用端忘记了做这个检查返回值,而直接使用返回的对象,那么就有可能抛出空指针异常。