
you are here
299
8
章
Template Method
パターン
ハリウッドの原 則とテンプレートメソッド
ハリウッドの原則と
Template Method
パターンの関連は、ある程度明白でしょ
う。
Template Method
パターンを使って設計すると、サブクラスに「こちらを呼び
出すな。こちらから呼び出す」と言っていることになります。どのようにするの
でしょうか?
CaffeineBeverage
の設計を見直してみましょう。
prepareRecipe()
boilWater()
pourInCup()
brew()
addCondiments()
CaffeineBeverage
brew()
addCondiments()
Tea
brew()
addCondiments()
Coffee
CaffeineBeverage
は高水準コンポーネン
トです。レシピのアルゴリズムを制御し、
メソッドの実装に必要な場合のみサブクラ
スを呼び出します。
Tea
と
Coffee
は最初に呼
び出されるだけで、抽象
クラスを直接呼び出すこ
とは決してありません。
サブクラスは実装の詳細を用意するた
めだけに使用します。
飲み物のクライアントは、
Tea
具象
クラスや
Coffee
具象クラスではな
く
CaffeineBeverage
抽象クラス
に依存します。これにより、シス
テム全体の依存性が減少します。
ハリウッドの原則を利用するパターンは他にもありますか?
Factory Method
パターン、
Observer
パターン、他にありますか?