第 5 章 行为型模式

行为型模式描述系统中对象之间的交互和通信,包括对系统中较为复杂的的流程的控制。

职责链模式(Chain of Responsibility Pattern)

为解除请求的发送者和接受者之间的耦合,而使多个对象有机会处理这个请求; 将这些对象连成一条链, 并沿着这条链传递该请求,直到有一个对象处理它。

第 5 章 行为型模式

命令模式(Command Pattern)

第 5 章 行为型模式
对象行为模式。
BoardScreen 充当接收者角色,MenuItem 充当调用者角色,Command充当抽象命令角色。OpenCommand 充当具体命令角色。
命令模式可以对发送者(Sender) 和接收者(Receiver)完全解耦(Decouping)。发送者可以对接受者的接口一无所知,提供了更大的灵活性和可扩展性。
类似于在餐馆顾客点餐。

解释器模式(Interpreter Pattern)

类型行为模式。
第 5 章 行为型模式
AbstractNode 充当抽象表达式角色,DirectionNode、ActionNode 和DistanceNode 充当终结符表达式角色,AndNode 和SentenceNode 充当非终结符表达式角色。

迭代器模式(Iterator Pattern)

聚合对象拥有两个职责:一是存储内部数据;二是遍历内部数据。遍历内部数据是可以变化的,又是可分离的。因此可以将遍历行为分离出来,抽象成一个迭代器。
第 5 章 行为型模式

中介者模式(Mediator Pattern)

对象行为型模式。
Mediator 表示抽象中介者,它定义了一个接口用于与各同事对象之间进行通信;ConcreteMediator 表示具体中介者, 它通过协调各个同事对象来实现协助行为,了解并维护它对各个同事对象的引用。

第 5 章 行为型模式

备忘录模式(Memento Pattern)

确保在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。该模式的别名为token,它是一种对象行为型模式。
最大缺点是资源消耗过大,如果类的成员变量太多,就不可避免占用大量的内存。
第 5 章 行为型模式

观察者模式(Observer Pattern)

对象行为型模式。
定义了对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式,模型-视图(Model/View)模式。
一个现实例子就是公路上的汽车和红绿灯,汽车是观察者,红绿灯是汽车的观察目标。
观察者模式的优点在于实现了表示层和数据逻辑层的分离,并定义了稳定的更新消息传递机制,类别清晰,抽象了更新接口,使得相同的数据逻辑层可以有各种各样不同的表示层。
第 5 章 行为型模式

状态模式

对象行为模式。
如银行账户,具有不同的状态时其行为有所差异;在系统中如果存在大量与对象状态相关的条件语句时也可以使用状态模式。因为大量的条件语句的出现,会导致代码的可维护性和灵活性变差,不能方便地增加或删除状态,从而使客户类与类库之间的耦合增强。
但状态模式的使用必然会增加系统类和对象的个数。

第 5 章 行为型模式
第 5 章 行为型模式

策略模式(Strategy Pattern)

对象行为模式。
定义了一系列算法,并将每个算法封装起来,使得它们可以相互替换,策略模式让算法独立于使用它的客户而变化,其别名为政策模式。
第 5 章 行为型模式

模板方法模式(Template Method Pattern)

优势在于子类定义详细的处理算法时不会改变算法的结构。
第 5 章 行为型模式

访问者模式(Visitor Pattern)

对象行为型模式。
第 5 章 行为型模式