
294
8
章
フックを実装する
public abstract class CaffeineBeverageWithHook {
void prepareRecipe() {
boilWater();
brew();
pourInCup();
if (customerWantsCondiments()) {
addCondiments();
}
}
abstract void brew();
abstract void addCondiments();
void boilWater() {
System.out.println("
お湯を沸かす
");
}
void pourInCup() {
System.out.println("
カップに注ぐ
");
}
boolean customerWantsCondiments() {
return true;
}
}
テンプレートメソッドを
フックする
フックは抽象クラスで宣言される、空の実装やデフォルトの実装
だけを備えたメソッドです。フックは、必要に応じてさまざまな時
点でアルゴリズムを「フック」する機能をサブクラスに与えます。
サブクラスはフックを無視してもかまいません。
フックにはいくつかの使い方があります。ここではその
1
つを見て
みましょう。その他のいくつかの使い方については、後で紹介します。
具象メソッド
customerWantsCondiments()
が
true
を返すことを調べる条件式を追加しまし
た。客がコンディメントを「希望する」場合に
のみ、 ...