
変化する部分を特定する
例えば、ピザ店を経営しているとしましょう。オブジェクト町にある最先
端のピザ店のオーナーですから、次のようなコードを書くことでしょう。
Pizza orderPizza() {
Pizza pizza = new Pizza();
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}
柔軟性を持たせるため、実際にはこれ
を抽象クラスかインタフェースにした
いところですが、残念ながらどちらも
直接インスタンス化することができま
せん。
次に、適切なピザの種類を判別し、そのピザを作成するコードを追加します。
ここでは
orderPizza
にピザの種類を渡して
います。
ビザの種類に基づいて正しい具象クラスを
インスタンス化し、ピザのインスタンス変
数に代入しています。なお、それぞれのピ
ザが
Pizza
インタフェースを実装する必要
があります。
Pizza
ができたら、下準備をしてから(つ
まり、生地を伸ばし、ソースを塗り、チー
ズなどのトッピングを加えてから)、焼き
上げ、カットして箱詰めします!
Pizza
の各サブタイプ(
CheesePizza
、
GreekPizza
など)は、それぞれの下準備
方法がわかっています。
Pizza orderPizza(String type) {
Pizza pizza;
if (type.equals("
チーズ
")) {
pizza = new CheesePizza(); ...