GoFデザインパターン一覧


生成に関するパターン
Factory Method オブジェクトの生成を行う時のインタフェースを規定して、 インスタンス化するクラスを決定するのはサブクラスに任せる。
Abstract Factory 関連するオブジェクト群を、その具象クラスを明確にせずに生成するための インタフェースを提供する。
Builder オブジェクトの生成手順が複雑な場合に、その生成過程をカプセル化する。
Prototype 生成するオブジェクトの原型をコピーして新しいオブジェクトを生成する。
Singleton システム内で生成可能なインスタンス数をひとつだけに制限する。
構造に関するパターン
Adapter インタフェースを変換することにより、インタフェースに互換性がない クラス同士を接続する。
Bridge クライアントがアクセスするクラス(インタフェース)と実装クラスを分離して、 それぞれを独立に変更できるようにする。
Composite 部分−全体階層を表現するために、クラスの木構造に組み立てる。 同一のクラスから派生したサブクラスを木構造のノードとし、 クライアントは木構造の任意の部分を同一のインタフェースで扱える。
Decorator サブクラス化ではなく委譲により、クラスに新しい機能を追加する。
Facade 複数のクラス群からなるサブシステムにアクセスするためのインタフェースを提供する。
Flyweight 一度生成したインスタンスはプーリングしておき、必要なときに取り出して使う。
Proxy オブジェクトへのアクセスをフックするための代理オブジェクトを提供する。
振る舞いに関するパターン
Command 要求をオブジェクトとしてカプセル化し、要求の発生と実際の処理を分離する。
Chain of Responsibility クライアントからの要求を複数のオブジェクトでたらいまわしにする。
Interpreter 文字列からなる構文を構文解析(Interprete)し、 構文を表現したオブジェクト構造ともとの文字列を関連付ける。
Iterator オブジェクトの集合があるとき、その集合の内部構造はカプセル化したままで、 要素に対して順にアクセスする方法を提供する。
Mediator 複数のオブジェクトを相互作用させる場合に、お互いのオブジェクト同士が直接参照する ことをなくすため、相互作用そのものをオブジェクトとして定義する。
Memento オブジェクトの状態を保存しておき、元に戻せるようにしておく。
Observer あるオブジェクトに依存した複数のオブジェクトがある場合に、 被依存オブジェクトの状態変化を、依存オブジェクトに通知する。
State 状態に応じてオブジェクトの振る舞いを変更したいときに、 振る舞いを別オブジェクトにカプセル化する。
Strategy アルゴリズムをカプセル化して、アルゴリズムを交換可能にする。 ひとつの入力データに対して、アルゴリズム毎に異なる結果を出力する。
Template Method アルゴリズムを複数のステップに分解し、それぞれのステップを抽象メソッドにする。 各ステップでのメソッドの実装はサブクラスで定義する。
Visitor 複数のオブジェクトからなるオブジェクト構造があるときに、 それぞれのオブジェクト要素に処理を追加またはオブジェクト要素の処理を変更するため、 Visitorクラスを用意する。


HOME お勧め書籍 / Profile / リンク