GOF デザインパターン
ナビゲーションに移動
検索に移動
んーなんというか、必読でしょう。ちょっと難解ですが。
目次
パターンカタログ
[[Category:パターン}}{{category TODO]]
生成に関するパターン
ABSTRACT FACTORY
目的
関連し合うオブジェクト群を、具象クラスを明確にせずに生成するためのインターフェースを提供する
別名
Kit
構成要素
- AbstractFactory
- AbstactProductオブジェクトを生成するオペレーションのインターフェースを宣言
- ConcreteFactory
- ConcreteProductオブジェクトを生成するオペレーションを実装
- AbstractProduct
- 部品ごとにインターフェースを宣言
- ConcreteProduct
- 対応するConcreteFactoryオブジェクトで生成される部品オブジェクトを定義
- AbstractProductのインターフェースを実装
- Client
- AbstractFactoryと、AbstractProductで宣言されたインターフェースのみを利用
結果
- 具象クラスの局所化
- 部品の集合を用意に変更できる
- 部品間の無矛盾せいを促進
- 新たな種類の部品に対応することは困難
BUILDER
目的
複合オブジェクトについて、作成過程を表現形式に依存しないものとし、同じ作成過程で異なる表現形式のオブジェクトを生成できるようになる
構成要素
- Builder
- Productオブジェクトの構成要素を生成するための抽象化されたインターフェースを規定
- ConcreteBuilder
- Builderクラスのインターフェースを実装することで、Productオブジェクトの構成要素の生成や組み合わせを行う
- Director
- Builderクラスのインターフェースを使って、オブジェクトを生成する
- Product
- 多くの構成要素からなる複合オブジェクトをあらわす。ConcreteBuilderクラスは、Productオブジェクトの内部表現を作成し、また組み立ての過程を定義
- 構成要素を定義するクラス、構成要素をProductオブジェクトに組み合わせていくためのインターフェースを含む
結果
- Productオブジェクトの内部表現の変更が可能になる
- 生成や表現のためのコードを局所化する
- Productオブジェクトの生成過程をより細かくコントロールできるようになる
FACTORY METHOD
目的
オブジェクトを生成するときのインターフェースのみを規定し、実際にどのクラスをインスタンス化するかはサブクラスに任せる
別名
Virtual Constructor
構成要素
- Product
- factory method が生成するオブジェクトのインターフェースを定義
- ConcreteProduct
- Productクラスのインターフェースを実装
- Creator
- Product型のオブジェクトを返す factory method を宣言する
- ConcreteCreator
- ConcreteProductクラスのインスタンスを返すように、factory method をオーバーライド
結果
- オブジェクトを拡張する場合の手がかりをサブクラスに提供
- パラレルなクラス階層をつなぐ
XXXXXXX
目的
別名
構成要素
結果
© 2006 矢木浩人