模板方法模式的定义: 在一个方法中定义一个算法的骨架,将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤
UML图(暂略)
例子:
public abstract class BeverageBase {
/**
* 该方法封装的算法的骨架
*/
public void makeBeverage() {
//从饮料分3步,第1步烧开水,2 冲泡 , 3 倒入杯中
boilWater();
brew();
pourInCup();
}
/**
* 烧开水算法是一样的
*/
public void boilWater() {
System.out.println("boil water...");
}
/**
* 不同饮料的冲泡不一样,声明为抽象方法,由子类实现
*/
public abstract void brew();
/**
* 倒入杯中的算法是一样的
*/
public void pourInCup() {
System.out.println("pour in cup...");
}
}
public class Coffee extends BeverageBase {
@Override
public void brew() {
System.out.println("brew coffee...");
}
}
public class Tea extends BeverageBase {
@Override
public void brew() {
System.out.println("brew tea...");
}
}