
作成者と製品を並列にとらえる
通常、具象作成者クラスにはそのクラスが作成する製品が全部含まれています。例えば、シカゴピ
ザ作成者クラスはさまざまなシカゴスタイルピザを作成し、ニューヨークピザ作成者クラスはさまざ
まなニューヨークスタイルピザを作成します。実は、作成者クラスと対応する製品クラスは並列階層
とみなせます。
2
つの並列クラス階層を確認し、どのように関係しているか調べてみましょう。
Pizza
NYPizzaStore
は、ニュー
ヨークスタイルのピザの
作り方に関するすべての
知識をカプセル化します。
ChicagoPizzaStore
は、シ
カゴスタイルのピザの作り
方に関するすべての知識を
カプセル化します。
この
2
つのクラス階層が
並列であることに注目し
ましょう。どちらにも具
象クラスで拡張された抽
象クラスがあり、具象ク
ラスはニューヨークとシ
カゴ用のピザの具体的な
実装について知っていま
す。
ファクトリメソッドは、この知識をカプセル化するための鍵となります。
createPizza()
ChicagoPizzaStore
createPizza()
NYPizzaStore
createPizza()
orderPizza()
PizzaStore
NYStyleClamPizza
ChicagoStyleVeg
giePizza
ChicagoSty
leClamPizza
ChicagoStylePeppero
niPizza
ChicagoStyleCh
eesePizza
NYStylePepperoniP
izza
NYStyleCheese ...