开篇,向大家介绍一下行为型模式。
行为型模式涉及算法和对象间职责的分配。
行为型模式同样分为行为型类模式和行为型对象模式
行为型类模式使用继承机制在类间分配行为。
行为型对象模式使用对象复合而不是继承。↓
一些行为对象模式描述了一组对等的对象怎样相互协作以完成其中任一个对象都无法单独完成的任务。
eg:mediator、chain of responsibility,observer
其他行为型对象模式常将行为封装在一个对象中并将请求指派给它。
eg:strategy,state,command,visitor,iterator。
行为型设计模式共包括以下几个模式:
- 观察者模式
- 命令模式
- 职责链模式
- 状态模式
- 策略模式
- 解释器模式
- 访问者模式
- 中介者模式
- 迭代器模式
- 备忘录模式
- 模块方法模式
接下来我们详细的学习一下各个模式:
观察者模式(Observer)
内容:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
特点:
1、使用该模式的目的:
将一个系统分割成一系列相互协作的类有个副作用,就是需要维护相关对象的一致性。这就会产生高耦合,故而使用该模式进行解耦合。让耦合双方都依赖于抽象,而不是依赖于具体。从而使各自的变化都不会影响另一边的变化。
2、何时使用该模式:
当一个对象的改变需要同时改变其他对象时;而且它不知道具体有多少对象有待改变。
当一个抽象模式有两个方面,其中一个方面依赖于另一方面,通过观察者,可以将两者封装在独立的对象中使它们各自独立变化
不足:
该模式还是存在抽象通知者依赖抽象观察者的情况,故而如果没有这个接口,就无法实现了。而且调用方法单一,只有一个更新,如果有其他需求是无法实现的。
结构图:
命令模式(Command)
内容:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
作用:
1、能比较容易的设计一个命令队列。
2、在需要的情况下,可以比较容易地将命令记入日志
3、允许接收请求的一方决定是否要否决请求<