GoF 行为模式

另请参见

GoF (Gang of Four) 行为模式涉及对象的算法以及对象的职责分配。行为模式还处理这些对象间的通信,并表示对象自身间的互连。这种互连可包括任务的继承和完成。

下表描述了各种 GoF 行为模式:

模式名称 处理的设计问题 角色 描述
Chain of Responsibility 通过为多个对象提供处理请求的机会,可以避免将请求的发送者与其接收者耦合起来。将接收对象链接在一起,并沿链传递请求,直到有对象处理它为止。 Handler 定义用于特定请求的抽象接口
ConcreteHandler 实现在 Handler 接口中声明的操作
客户端 通过一个具体处理来启动通信
Command Pattern 通过将请求封装为对象,您可以使用不同的请求将客户端参数化。您还可以将请求排队或建立请求的日志记录,以及支持可撤消操作。 命令 定义用于执行操作的抽象接口。
ConcreteCommand 实现在 Command 接口中声明的操作。
客户端 创建一个 ConcreteCommand 对象
Invoker 执行在 Command 派生对象中定义的接口
接收 执行所请求操作的具体实现
Interpreter 定义给定语言语法的表示法。interpreter 使用该表示法来解释使用此语言编写的句子。 AbstractExpression 定义在抽象语法树中所有节点都必须实现的抽象解释操作
TerminalExpression 提供解释操作的具体实现,该操作明确与语法中的终结符号关联。
NonterminalExpression 提供解释操作的具体实现,该操作明确与语法中的非终结符号关联
Iterator 提供一种统一机制来导航集合中的不同元素,但不显示导航元素的特定实现详细信息。 Iterator 定义用于导航元素的抽象接口。
ConcreteIterator 实现在 Iterator 接口中声明的操作
Aggregate 定义用于创建 ConcreteIterator 对象的抽象接口。
ConcreteAggregate 实现在 Aggregate 接口中声明的操作。
Mediator 提供一种统一机制来导航集合中的不同元素,但不显示导航元素的特定实现详细信息。 Iterator 定义用于导航元素的抽象接口。
Concrete Iterator 实现在 Iterator 接口中声明的操作
Aggregate 定义用于创建 ConcreteIterator 对象的抽象接口
Concrete Aggregate 实现在 Aggregate 接口中声明的操作
Memento 可以捕获对象的内部状态并将其外部化,使对象可在以后恢复到此状态。可以在不破坏封装的情况下完成此操作。 Memento 一个对象,用于管理给定时间点的 Originator 状态。
Originator 创建一个 Memento 对象,并在当前上下文中为其提供必需的状态信息。
Caretaker 聚合 Memento 对象。
Observer 在对象之间定义了一种一对多的依赖关系。如果一个对象的状态发生变化,则会自动通知并更新其所有相关对象。 Subject 定义用于将各个 Observer 连接到 Subject 的抽象接口。
Observer 定义更新 Observer 正在观察的 Subject 时所用的抽象接口。
ConcreteSubject 实现在 Subject 接口中声明的操作。
ConcreteObserver 实现在 Observer 接口中声明的操作。
状态 它提供了一种机制,允许对象在内部状态发生变化时改变其行为。 上下文 定义客户端用来访问 Context 状态的接口。
状态 定义 ConcreteState 必须实现的抽象接口。此接口是域特定的接口
ConcreteState 实现在 State 接口中声明的操作
Strategy 定义一系列算法,封装每个算法,这些算法可以互换。算法可以有所改变,但不受使用它的客户端影响。 Strategy 定义由 ConcreteStrategy 对象实现的抽象接口
ConcreteStrategy 实现在 Strategy 接口中声明的操作。
上下文 聚合实现 Strategy 接口的对象
TemplateMethod 定义操作中的算法框架,并将某些步骤委托给子类。子类可以在不更改算法结构的情况下重新定义算法的某些步骤。 AbstractClass 定义可由 ConcreteClass 覆盖的各种操作。
ConcreteClass 实现在 AbstractClass 中定义的特定操作。
Visitor Visitor 表示一种要对对象结构元素执行的操作。您可以定义一种新的操作,而不更改对其进行操作的元素的类。 Visitor 提供针对具体元素的操作,这些操作允许此 Visitor 对象对其进行访问。
ConcreteVisitor 实现在 Visitor 接口中声明的操作。
元素 声明一个 Accept 操作,此操作允许 Visitor 对象处理当前元素。
ConcreteElement 实现在 Element 接口中声明的操作。
ObjectStructure 管理 ConcreteVisitor 和 ConcreteElement 对象之间的协作。
另请参见
GoF 创建模式
GoF 结构模式

法律声明