
原則を適用する
非常に依存関係の多い
PizzaStore
には、
PizzaStore
内の
orderPizza()
メソッドで実
際に具象型をインスタンス化しているため、すべての種類のピザに依存している
という問題があります。
私たちは抽象クラス
Pizza
を作成していますが、それでもそのコードの中で具象
ピザを作成しているので、この抽象からはあまりメリットが得られません。
どのようにすればこのインスタンス化を
orderPizza()
メソッドから取り除くこと
ができるでしょうか?
もうおわかりですね。
Factory Method
で可能になります。
Factory Method
を適用すると、以下のような図になります。
P
i
z
z
a
S
t
o
r
e
P
i
z
z
a
N
Y
S
t
y
l
e
V
e
g
g
i
e
P
i
z
z
a
N
Y
S
t
y
l
e
C
l
a
m
P
i
z
z
a
N
Y
S
t
y
l
e
P
e
p
p
e
r
o
n
i
P
i
z
z
a
N
Y
S
t
y
l
e
C
h
e
e
s
e
P
i
z
z
a
C
h
i
c
a
g
o
S
t
y
l
e
P
e
p
p
e
r
o
n
i
P
i
z
z
a
C
h
i
c
a
g
o
S
t
y
l
e
C
h
e
e
s
e
P
i
z
z
a
C
h
i
c
a
g
o
S
t
y
l
e
V
e
g
g
i
e
P
i
z
z
a
C
h
i
c
a
g
o
S
t
y
l
e
C
l
a
m
P
i
z
z
a
具象ピザクラスは
Pizza
抽象クラス内の
Pizza
インタフェースを実装しているた
め、具象ピザクラスも抽象
Pizza
に依存し
ます(「インタフェース」という用語を一
般的な意味で使用していることに注意)。
Pizza
は抽象クラス、
つまり抽象です。
この図では、
PizzaStore
は抽象
クラス
Pizza
だけに依存します。 ...