模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以再不改变算法结构的情况下,重新定义算法中的某些步骤。就是把一个方法中调用到的相同的方法抽离出来写成公共方法,其他方法交给子类实现。
和策略模式的区别 :策略模式是一整个完整的算法 ,模板模式是一个完成算法中的一部分。
public abstract class CaffeineBeverage {
//防止子类覆盖方法
final void prepareRecipe() {
boilWater();
brew();
pourInCup();
addCondiments();
}
public abstract void brew();
public abstract void addCondiments();
//防止子类覆盖方法
final void boilWater() {
System.out.println("Boiling water");
}
//防止子类覆盖方法
final void pourInCup() {
System.out.println("Pouring into cup");
}
}
public class Coffee extends CaffeineBeverage {
@Override
public void brew() {
System.out.println("Dripping Coffee through filter");
}
@Override
public void addCondiments() {
System.out.println("Adding Sugar and Milk");
}
}
public class Tea extends CaffeineBeverage {
@Override
public void brew() {
System.out.println("Steeping the tea");
}
@Override
public void addCondiments() {
System.out.println("Adding Lemon");
}
}