動作に関する GoF パターン

関連項目

動作に関する GoF (Gang of Four) パターンは、オブジェクトのアルゴリズムとオブジェクト間の責任の割り当てに関連します。また、動作パターンはこれらのオブジェクト間のコミュニケーションにも対応し、オブジェクト同士の相互接続を表します。この相互接続には、継承やタスクの実行も含まれることがあります。

次の表で動作に関する GoF パターンについて説明します。

パターン名 対応する設計上の問題 ロール 説明
Chain of Responsibility 複数のオブジェクトに要求を処理できる機会を与えることで、要求を送信するオブジェクトと要求を受信するオブジェクトが結合されるのを回避できます。要求を受信する複数のオブジェクトをチェーン状につなぎ、あるオブジェクトがその要求を処理するまで、そのチェーンに沿って要求を渡していきます。 Handler 特定の要求に使用される抽象インタフェースを定義します。
ConcreteHandler Handler インタフェースに宣言された操作を実装します。
Client Concrete Handler を介して通信を開始します。
Command Pattern 要求をオブジェクトとしてカプセル化すると、異なる要求を持つクライアントをパラメータで表すことができます。要求を待ち行列に置くことやログに記録することもでき、取り消し可能な操作もサポートします。 コマンド 操作を実行するための抽象インタフェースを定義します。
ConcreteCommand Command インタフェースに宣言された操作を実装します。
Client ConcreteCommand オブジェクトを作成します。
Invoker Command 派生オブジェクトに定義されたインタフェースを実行します。
Receive 要求された操作の具象的な実装を実行します。
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 オブジェクト間に 1 対多の依存関係が定義されます。1 つのオブジェクトの状態が変わると、そのすべての依存関係は自動的に通知を受けて更新されます。 Subject この Subject オブジェクトにさまざまな Observer を付加するために使用する抽象インタフェースを定義します。
Observer Observer が監視している Subject オブジェクトの更新に使用される抽象インタフェースを定義します。
ConcreteSubject Subject インタフェースに宣言された操作を実装します。
ConcreteObserver Observer インタフェースに宣言された操作を実装します。
State オブジェクトの内部状態が変化したときに自身の動作を変更できるようにする機構を提供します。 Context Context の状態にアクセスするためにクライアントが使用するインタフェースを定義します。
State ConcreteState によって実装される必要がある抽象インタフェースを定義します。これはドメイン固有のインタフェースです。
ConcreteState State インタフェースに宣言された操作を実装します。
Strategy アルゴリズムの集合が定義されます。各アルゴリズムはカプセル化され、互換性があります。アルゴリズムは、使用されるクライアントとは無関係に変更できます。 Strategy ConcreteStrategy オブジェクトによって実装される抽象インタフェースを定義します。
ConcreteStrategy Strategy インタフェースに宣言された操作を実装します。
Context Strategy インタフェースを実装するオブジェクトを集約します。
TemplateMethod 操作にアルゴリズムのスケルトンが定義されます。その一部の手順はサブクラスに据え置かれます。サブクラスでは、アルゴリズムの構造を変更せずに特定の手順を再定義できます。 AbstractClass さまざまな操作を定義します。これらの操作は ConcreteClass で上書きできます。
ConcreteClass AbstractClass に定義された特定の操作を実装します。
Visitor Visitor は、オブジェクト構造の要素に対して実行される操作を表します。操作の対象となる要素のクラスを変更しなくても新しい操作を定義できます。 Visitor 具象要素に特定の操作を提供し、この Visitor オブジェクトが各要素にアクセスできるようにします。
ConcreteVisitor Visitor インタフェースに宣言された操作を実装します。
Element Accept 操作を宣言します。この操作により、Visitor オブジェクトは現在の要素を処理できます。
ConcreteElement Element インタフェースに宣言された操作を実装します。
ObjectStructure ConcreteVisitor オブジェクトと、ConcreteElement オブジェクト間のコラボレーションを管理します。
関連項目
作成に関する GoF パターン
構造に関する GoF パターン

著作権と商標について