模板方法模式:在一个方法中定义了一个算法的骨架,而将实现延迟到子类中。模板方法使得子类在不改变算法结构的同时提供自己的特定实现。
public abstract class Templet { public void prepareDinner() { buyGroceries(); washgroceries(); choppingVegetables(); cook(); } abstract void buyGroceries(); public void washgroceries() { System.out.println("洗菜了~~"); } public void choppingVegetables() { System.out.println("切菜了~~"); } abstract void cook(); }
public class Fish extends Templet{ @Override void buyGroceries() { System.out.println("买了一条大活鱼"); } @Override void cook() { System.out.println("鲫鱼豆腐汤出锅啦!!"); } }
public class Beef extends Templet{ @Override void buyGroceries() { System.out.println("一斤牛肉,两斤青椒"); } @Override void cook() { System.out.println("好大一盘青椒牛肉啊~~"); } }
Templet类里面定义了一个做菜的算法,步骤就是1.买菜 2.洗菜 3.切菜 4.炒菜 默认2,3两个步骤是可以共享的,反正所有的菜都是用水洗用刀切嘛~~ 1,4在模板类里面提供的是抽象的方法,具体买什么菜,怎么做得有具体的菜式决定。