一、模式介绍
模板方法模式特别适合于整体流程(算法)固定,只有一小部分功能不同的场景
通过一个抽象父类构造起整个骨架,而将不固定的部分以抽象方法的形式保留,交给子类去具体实现
二、采用模板方法模式实现街边小吃(烤冷面)
假设烤冷面制作流程是固定的:1. 加热面饼,2.加调料
我们先来实现一个制作骨架(即抽象类)
public abstract class Cook {
public void cook() {
System.out.println("加热面饼...");
addSeasoning(); // 这个加调料是不固定的,抽象方法,子类负责实现
}public abstract void addSeasoning();
}
分别实现两种 cook 方式
public class SaltyCook extends Cook{
@Override
public void addSeasoning() {
System.out.println("放盐...");
}}
public class SweetCook extends Cook{
@Override
public void addSeasoning() {
System.out.println("加糖...");
}}
测试
public class Main {
public static void main(String[] args) {
Cook cook = new SaltyCook();
cook.cook();
cook = new SweetCook();
cook.cook();
}}