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