模板模式

/**
 * 模板模式:一个抽象类,提供一个固定的方法,该方法使用final修饰,方法里面的实现调用了其他抽象方法,抽象方法留给子类实现
 * 这样,这个final修饰的方法就是模板方法,它提供了做这个事情的方法步骤,只是具体的步骤根据不同子类的不同实现来决定
 *
 *
 */
public abstract class Cook {

    protected void buyFood(){
        System.out.println("买菜");
    }

    protected abstract void cookFood();

    public final void makeFood(){
        buyFood();
        cookFood();
        saveFood();
    }
    protected void saveFood(){
        System.out.println("装菜");
    }

}
public class ChineseCook extends Cook {
    @Override
    public void cookFood() {
        System.out.println("中国菜制作中.............");
    }
}
public class EnglishCook extends Cook {
    @Override
    public void cookFood() {
        System.out.println("英国菜制作中..........");
    }
}
public class Test {
    public static void main(String[] args) {
        new ChineseCook().makeFood();//制作中国菜
        new EnglishCook().makeFood();//制作英国菜

    }
}
原文地址:https://www.cnblogs.com/yangxiaohui227/p/10918274.html