abstract class BeverageTemplate {
// 模板方法,定义了算法的骨架
final void makeBeverage() {
boilWater();
brew();
pourInCup();
addCondiments();
}
// 具体步骤由子类实现
abstract void brew();
abstract void addCondiments();
// 共同的步骤,可以在父类中定义
void boilWater() {
System.out.println("Boiling water");
}
void pourInCup() {
System.out.println("Pouring into cup");
}
}
class Coffee extends BeverageTemplate {
// 子类实现具体步骤
void brew() {
System.out.println("Brewing coffee");
}
void addCondiments() {
System.out.println("Adding sugar and milk");
}
}
class Tea extends BeverageTemplate {
// 子类实现具体步骤
void brew() {
System.out.println("Steeping the tea");
}
void addCondiments() {
System.out.println("Adding lemon");
}
}
public class TemplateMethodPatternExample {
public static void main(String[] args) {
System.out.println("Making coffee:");
BeverageTemplate coffee = new Coffee();
coffee.makeBeverage();
System.out.println("\\nMaking tea:");
BeverageTemplate tea = new Tea();
tea.makeBeverage();
}
}