
288
8
章
Template Method
パターンとの出会い
Template Method
との出会い
これで、基本的には
Template Method
パターンを実装できました。このパターンは何で
しょうか?
CaffeineBeverage
クラスの構造を確認しましょう。このクラスには、事実上の「テ
ンプレートメソッド」が含まれています。
final void prepareRecipe() {
}
brew();
pourInCup();
addCondiments();
boilWater();
abstract void brew();
abstract void addCondiments();
void boilWater() {
//
実装
}
void pourInCup() {
//
実装
}
}
public abstract class CaffeineBeverage {
このテンプレートは、アルゴ
リズムの各手順をメソッドで
表しています。
prepareRecipe()
は「テンプ
レートメソッド」です。なぜ
でしょうか?
その理由は、
(1)
これはやはりメソッドで、
(2)
アルゴリズム(この例の場合はカフェ
イン飲料を作るアルゴリズム)のテンプ
レートとしての役割を果たすからです。
一部のメソッドはこのクラ
スで処理されます。
そして、一部のメソッドは
サブクラスで処理されます。
サブクラスで用意する必要のあ
るメソッドを、抽象メソッドと
して宣言します。
Template Method
はアルゴリズムの手順を ...