模板模式
抽象基类:
package templateFactory; /** * @program: designPattern * @description: 抽象基类,为所有的子类提供一个算法框架 * @author: Mr.Zhang * @create: 2020-08-04 17:06 * 提神饮料 **/ public abstract class RefreshBeverage { //使用抽象基类定义框架,而禁止所有的子类改变算法框架 /** * 制备饮料的模板方法 * 封装了所有子类共同遵循的算法框架 **/ public final void prepareBeverageTemplate(){ //1.将水煮沸 boilWater(); //2.泡制饮料 brew(); //3.将饮料倒入杯中 pourInCup(); if(isCustomerWantsCodiments()){ //4.加入调料 addCondiments(); } } //询问用户是否加入调料 //Hook,钩子函数,提供一个默认或空的实现 //具体的子类可以自行决定是否挂钩以及如何挂钩 protected boolean isCustomerWantsCodiments() { return true; } //对于子类来说是共同的方法 private void boilWater(){ System.out.println("将水煮沸"); } //抽象方法,不需要实现 protected abstract void brew(); private void pourInCup(){ System.ou