行为型模式关注于对象之间在行为方面的交互。可以从如下角度来解析各种行为模式:
- 和对象状态更新相关的模式
- 备忘录模式关注于对象状态的备份与恢复,但不破坏对象的封装性。Memento由对象自行创建,由客户保持;客户在需要的时候利用 Memento来恢复对象状态
- 状态模式描述了对象状态的修改如何导致对象行为的改变
- 观察者模式引入订阅,发布机制来通知观察者关于被观察对象状态的更新;这种机制解除了对象对于观察者的依赖
- 和对象对象方法相关的模式
- 模板方法模式利用了C++的多态特性,利用虚函数来定义一个稳定的算法框架,通过子类的多态性,在相同的算法框架下呈现差异化的行为
- 策略模式把算法封装成函数对象,并利用该函数对象来配置另外一个对象,从而改变该对象的行为
- 和集合对象遍历相关的模式
- 迭代器模式遍历集合对象,支持不同的遍历算法,但隐藏集合的具体结构,保持了集合对象的封装性
- 责任链模式在遍历集合对象的过程中,让集合中多个节点元素对象基于相同接口来处理一个请求,隐藏某个请求可能的多个接受者的事实
- 访问者模式提供一个Visitor接口来遍历集合对象,保持节点元素的稳定性,但是可以灵活的扩展节点的访问方法
- 对象之间的交互依赖:
- 命令模式把请求封装成为一个命令对象,命令对象隐藏了命令的接受者信息(接受者类型,接收接口,接收逻辑等),消除了消息发送者和接收者直接依赖
行为型模式提高了对象的封装性和内聚性,降低了对象之间的耦合度。
- 中介者模式把多个对象之间的交互关系,集中到一个中介者对象来处理。避免了对象和其他对象的直接交互,提高了对象的可重用性