模板方法是什么?
- 模板方法模式(Template Method Pattern)是一种行为型设计模式。相当于父类定流程,子类补细节。也就是说,父类定义好“做事的流程”(算法骨架),具体每一步怎么做由子类决定。
生活举例
- 例如你去吃“套餐”:早餐套餐 = 主食 + 饮料,但主食和饮料的内容可以换(包子+豆浆、面包+咖啡)。
- 这就像模板方法模式:套餐的流程是固定的(父类模板方法)-> 准备主食() + 准备饮料()。然而每家早餐店可以决定细节(子类具体实现),包子店:准备包子 + 豆浆,西式店:准备面包 + 咖啡
代码举例
// 抽象父类:定义流程
abstract class Breakfast {// 模板方法:定义算法骨架public final void makeBreakfast() {prepareMain();prepareDrink();System.out.println("早餐准备好了!\n");}// 留给子类实现的步骤protected abstract void prepareMain();protected abstract void prepareDrink();
}// 子类1:包子豆浆店
class ChineseBreakfast extends Breakfast {protected void prepareMain() {System.out.println("准备包子");}protected void prepareDrink() {System.out.println("准备豆浆");}
}// 子类2:西式早餐店
class WesternBreakfast extends Breakfast {protected void prepareMain() {System.out.println("准备面包");}protected void prepareDrink() {System.out.println("准备咖啡");}
}// 测试
public class Main {public static void main(String[] args) {Breakfast chinese = new ChineseBreakfast();Breakfast western = new WesternBreakfast();chinese.makeBreakfast();western.makeBreakfast();}
}
输出结果
准备包子
准备豆浆
早餐准备好了!准备面包
准备咖啡
早餐准备好了!
总结
- 模板方法模式就是 固定流程 + 灵活步骤。父类规定“框架怎么走”,子类决定“细节怎么做”。