somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【パターン】部品の設計・生成工場【Abstract Factory】

Abstract Factoryパターンのメモです。

Factory Methodとの違い

Factory Methodでは、作成したいものを工場からそのまま生成していました。Abstract Factoryは、作成したい物ごとに工場を建て、その工場から作成したいものを作成しています

PCを作る工場をあげます。前提として、各工場で作成できる部品が統一されていて、部品の仕様は統一されていることとします。作る手順としては以下のとおりです。

  1. 欲しいPCメーカー(DellやNEC)のPCを作る工場を作成する
  2. 作成された工場から部品(マウスやキーボード、ディスプレイなど)を作成する
  3. 作成された部品を仕様どおりに操作する

以下のようなリストになるかと思います。工場作成部分をFactory Methodにできますね。部品の仕様は省いていますが、マウスなら右クリック、ディスプレイならON/OFF切り替えなどがあると思います。

  • 工場
    • Dell工場作成
      • Dell工場がマウス作成
      • Dell工場がキーボード作成
      • Dell工場がディスプレイ作成
    • NEC工場作成
      • NEC工場がマウス作成
      • NEC工場がキーボード作成
      • NEC工場がディスプレイ作成
    • 追加したいメーカーの工場
    •   

利点

仕様が統一されている前提のために、利用側がそれさえ知っていれば問題ないことです。以下のような利点があります。

他にメーカーを増やしたい場合、メーカーのPC作成工場とそのメーカーPCの部品を追加するだけですみます。作成したい立場としても、メーカーを選びなおすだけですむので、他のメーカーに影響が出ません。

部品の変更をしたい場合、部品の追加後、メーカーのPC工場から作成されるものを変更するだけすみます。作成したい立場としては、なにも行う必要はありません。

作成したい部品に追加がある場合、工場全体に影響が出ます。作成したい立場としては、どのメーカーの部品であっても追加された部品の作成方法と部品の使い方を提供されていればいいだけです。