5-行为型模式
行为型模式涉及算法和对象间职责的分配。行为型模式不仅描述对象或类的模式,还描述它们之间的通信模式。
- 类行为型模式使用继承机制在类间分派行为
- 对象行为型模式描述了一组对等的对象怎样相互协作
大多数模式有两种对象:封装该方面特征的新对象,使用这些新对象的已有对象。
- 不使用这些模式的话,通常这些新对象的功能就会变成已有对象的难以分割的一部分。
通信的封装/协作
- Observer 通过引入 Observer 和 Subject 对象来分布通信
- Mediator 对象则封装了其他对象间的通信
解耦合
当合作的对象直接互相引用时,它们变得互相依赖。命令、观察者、中介者和职责链等模式都涉及如何对发送者和接收者解耦,但它们又各有不同的权衡考虑。
命令模式使用一个 Command 对象来定义发送者和接收者之间的绑定关系
- Command 对象提供了一个提交请求的简单接口(即 Execute 操作)。
- 将发送者和接收者之间的连接定义在一个单独的对象中使得该发送者可以与不同的接收者一起工作。

观察者模式通过定义一个接口来通知目标中发生的改变,从而将发送者(目标)与接收者(观察者)解耦
- 当对象间有数据依赖时,最好用观察者模式来对它们进行解耦。

中介者模式让对象通过一个 Mediator 对象间接地互相引用,从而对它们解耦
- 它将通信行为集中到一个类中而不是将其分布在各个子类中
- 为增加灵活性 Mediator 可能不得不实现它自己的分发策略(例如用一定方式对请求编码并打包参数),但这通常会导致类型安全问题

职责链模式通过沿一个潜在接收者链传递请求而将发送者与接收者解耦



