
282
8
章
抽象化の第一弾
Coffee
と
Tea
を抽象化しよう
各サブクラスは
独自のレシピを
実装します。
Coffee
クラスと
Tea
クラスは、とてもわかりやすい設計の
練習になりそうです。第一弾は以下のようになるでしょう。
prepareRecipe()
boilWater()
pourInCup()
CaffeineBeverage
prepareRecipe()
steepTeaBag()
addLemon()
Tea
prepareRecipe()
brewCoffeeGrinds()
addSugarAndMilk()
Coffee
boilWater()
メソッドと
pourInCup()
メソッドは両方のサブクラスで共有される
ので、スーパークラスで定義します。
prepareRecipe()
メソッドは
サブクラスごとに異なるので、
抽象メソッドとして定義します。
Coffee
と
Tea
で異なるメ
ソッドは、サブクラス内に
残ります。
各サブクラスは
prepareRecipe()
メ
ソッドをオーバーライ
ドして、独自のレシピ
を実装します。
うまく再設計できましたか?
うんうん、もう一度見直してみましょう。他の共通
点を見落としていませんか?
Coffee
と
Tea
には、他にどのような類似点があるで
しょうか?