9.模板方法模式
模板方法模式其实就是将相似步骤的类抽取相同的部分到抽象类中,不同部分在抽象类中定义为抽象方法,让具体类去实现。
以泡茶和泡咖啡作为例子。他们都需要煮水,泡茶或咖啡,过滤,加柠檬或糖
1.抽象出来的类
//把相同的煮水和过滤抽出来,至于泡的是茶还是咖啡,加的是柠檬还是糖则泛化为抽象 public abstract class CaffeineBeverage { final void prepareRecipe(){ boilWater(); brew(); pourInCup(); addCondiments(); } abstract void addCondiments(); void pourInCup() { // TODO Auto-generated method stub System.out.println("Pouring in cup"); } abstract void brew(); private void boilWater() { // TODO Auto-generated method stub System.out.println("Boiling water"); } }
2.具体实现的类
public class Coffee extends CaffeineBeverage { @Override void addCondiments() { // TODO Auto-generated method stub System.out.println("Adding sugar and milk"); } @Override void brew() { // TODO Auto-generated method stub System.out.println("dripping coffee through filter"); } } public class Tea extends CaffeineBeverage{ @Override void addCondiments() { // TODO Auto-generated method stub System.out.println("Adding Lemon"); } @Override void brew() { // TODO Auto-generated method stub System.out.println("Steeping the tea"); } }
本人倡导的讲解方式:代码示例[学以致用,不仅要知道理论,还要知道理论怎么付诸实践],
文字讲解[不仅知道要怎么用,还要知道是怎么回事],
画图讲解[有图有真相,用图的形式将代码嵌入到理论中,整体理解]