面试题答案
一键面试// 模板类
abstract class Beverage {
// 模板方法,定义制作饮品的流程
final void prepareRecipe() {
boilWater();
brew();
pourInCup();
}
// 烧水方法,具体实现由子类决定
void boilWater() {
System.out.println("烧开水");
}
// 冲泡方法,由具体子类实现
abstract void brew();
// 倒入杯子方法,具体实现由子类决定
void pourInCup() {
System.out.println("倒入杯子");
}
}
// 咖啡子类
class Coffee extends Beverage {
@Override
void brew() {
System.out.println("用咖啡豆冲泡咖啡");
}
}
// 茶子类
class Tea extends Beverage {
@Override
void brew() {
System.out.println("用茶叶泡茶");
}
}
可以通过以下方式测试:
public class TemplateMethodPatternTest {
public static void main(String[] args) {
Beverage coffee = new Coffee();
coffee.prepareRecipe();
Beverage tea = new Tea();
tea.prepareRecipe();
}
}