模板方法模式(Template Method Pattern)是一种行为型设计模式,它在抽象类中定义了一个算法的框架,并将一些步骤延迟到子类中实现。这种模式使得子类可以在不改变算法结构的情况下重写算法中的某些特定步骤。
// 抽象模板类 - 烹饪基础流程
public abstract class CookingRecipe {
// 模板方法
public final void cookMeal() {
prepareIngredients();
cook();
serve();
}
// 具体方法由抽象类实现
protected void prepareIngredients() {
System.out.println("Preparing ingredients...");
}
// 抽象方法,留给子类实现
protected abstract void cook();
// 具体方法由抽象类实现
protected void serve() {
System.out.println("Serving the meal...");
}
}
// 具体模板类 - 蒸饭食谱
public class SteamedRiceRecipe extends CookingRecipe {
@Override
protected void cook() {
System.out.println("Steaming rice...");
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
CookingRecipe recipe = new SteamedRiceRecipe();
recipe.cookMeal(); // 输出:Preparing ingredients... -> Steaming rice... -> Serving the meal...
}
}
想象你正在教孩子做一道菜,这个过程中包含了切菜、炒菜和上菜三个步骤。作为家长,你会告诉孩子整个做菜的大致流程(模板方法),但是让孩子自己决定如何切菜和炒菜(抽象方法)。这样,每次做不同的菜时,只要按照你设定的基本流程走,但具体怎么切怎么炒可以根据不同菜品自由发挥。