| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

GOF デザインパターン

提供: MyMemoWiki
2020年2月16日 (日) 04:26時点におけるPiroto (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

んーなんというか、必読でしょう。ちょっと難解ですが。

パターンカタログ

[[Category:パターン}}{{category TODO]]

生成に関するパターン

ABSTRACT FACTORY

目的

関連し合うオブジェクト群を、具象クラスを明確にせずに生成するためのインターフェースを提供する

別名

Kit

構成要素
  • AbstractFactory
    • AbstactProductオブジェクトを生成するオペレーションのインターフェースを宣言
  • ConcreteFactory
    • ConcreteProductオブジェクトを生成するオペレーションを実装
  • AbstractProduct
    • 部品ごとにインターフェースを宣言
  • ConcreteProduct
    • 対応するConcreteFactoryオブジェクトで生成される部品オブジェクトを定義
    • AbstractProductのインターフェースを実装
  • Client
    • AbstractFactoryと、AbstractProductで宣言されたインターフェースのみを利用
結果
  • 具象クラスの局所化
  • 部品の集合を用意に変更できる
  • 部品間の無矛盾せいを促進
  • 新たな種類の部品に対応することは困難

0571 abstractfactory.jpg

BUILDER

目的

複合オブジェクトについて、作成過程を表現形式に依存しないものとし、同じ作成過程で異なる表現形式のオブジェクトを生成できるようになる

構成要素
  • Builder
    • Productオブジェクトの構成要素を生成するための抽象化されたインターフェースを規定
  • ConcreteBuilder
    • Builderクラスのインターフェースを実装することで、Productオブジェクトの構成要素の生成や組み合わせを行う
  • Director
    • Builderクラスのインターフェースを使って、オブジェクトを生成する
  • Product
    • 多くの構成要素からなる複合オブジェクトをあらわす。ConcreteBuilderクラスは、Productオブジェクトの内部表現を作成し、また組み立ての過程を定義
    • 構成要素を定義するクラス、構成要素をProductオブジェクトに組み合わせていくためのインターフェースを含む
結果
  • Productオブジェクトの内部表現の変更が可能になる
  • 生成や表現のためのコードを局所化する
  • Productオブジェクトの生成過程をより細かくコントロールできるようになる

0572 builder.jpg

FACTORY METHOD

目的

オブジェクトを生成するときのインターフェースのみを規定し、実際にどのクラスをインスタンス化するかはサブクラスに任せる

別名

Virtual Constructor

構成要素
  • Product
    • factory method が生成するオブジェクトのインターフェースを定義
  • ConcreteProduct
    • Productクラスのインターフェースを実装
  • Creator
    • Product型のオブジェクトを返す factory method を宣言する
  • ConcreteCreator
    • ConcreteProductクラスのインスタンスを返すように、factory method をオーバーライド
結果
  • オブジェクトを拡張する場合の手がかりをサブクラスに提供
  • パラレルなクラス階層をつなぐ

0573 factorymethod.jpg

XXXXXXX

目的
別名
構成要素
結果