/** * 模板模式:一个抽象类,提供一个固定的方法,该方法使用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();//制作英国菜 } }