-
模式的秘密---模板方法模式——代码实现 II 2、Tea.java /* * 具体子类,提供了制备茶的具体实现 */ public class Tea extends RefreshBeverage { @Override protected void brew() { System.out.println("用80度的热水浸泡茶叶5分钟"); } @Override protected void addCondiments() { System.out.println("加入柠檬"); } @Override /* * 子类通过覆盖的形式选择挂载钩子函数 */ protected boolean isCustomerWantsCondiments(){ return false; } } 3、Coffee.java /* * 具体子类,提供了咖啡制备的具体实现 */ public class Coffee extends RefreshBeverage { @Override protected void brew() { System.out.println("用沸水冲泡咖啡"); } @Override protected void addCondiments() { System.out.println("加入糖和牛奶"); } } 4、RefreshBeverageTest.java public class RefreshBeverageTest { public static void main(String[] args) { System.out.println("制备咖啡..."); RefreshBeverage b1 = new Coffee(); b1.prepareBeverageTemplate(); System.out.println("咖啡好了!"); System.out.println("制备茶..."); RefreshBeverage b2 = new Tea(); b2.prepareBeverageTemplate(); System.out.println("茶好了!"); } } Ps:注意钩子方法的使用。查看全部
-
模式的秘密---模板方法模式——代码实现 I 1、RefreshBeverage.java /* * 抽象基类,为所有子类提供一个算法框架 * 提神饮料 */ public abstract class RefreshBeverage { /* * 制备饮料的模板方法 * 封装了所有子类共同遵循的算法框架 */ public final void prepareBeverageTemplate(){ //步骤1 将水煮沸 boilWater(); //步骤2 泡制饮料 brew(); //步骤3 将饮料倒入杯中 pourInCup(); if(isCustomerWantsCondiments()){ //步骤4 加入调味料 addCondiments(); } } /* * Hook, 钩子函数,提供一个默认或空的实现 * 具体的子类可以自行决定是否挂钩以及如何挂钩 * 询问用户是否加入调料 */ protected boolean isCustomerWantsCondiments() { return true; } /* * 基本方法,将水煮沸 */ private void boilWater() { System.out.println("将水煮沸"); } /* * 基本方法,将饮料倒入杯中 */ private void pourInCup() { System.out.println("将饮料倒入杯中"); } /* * 抽象的基本方法,泡制饮料 */ protected abstract void brew(); /* * 抽象的基本方法, 加入调味料 */ protected abstract void addCondiments(); } ... 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
模式的秘密---模板方法模式——生活案例——饮料的调制方法 II 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
模式的秘密---模板方法模式——生活案例——饮料的调制方法 I 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
模式的秘密---模板方法模式——生活案例 II 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
模式的秘密---模板方法模式——生活案例 I 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】查看全部
-
末班方法模式的适用场景查看全部
-
模版方法定义为final查看全部
-
模板模式的应用,只有日志分析的时候实现不一样所以抽取出来具体实现。查看全部
-
模板方法模式的适用场景: 总结:只要有一些业务逻辑中大致的执行情况是相同的,那么就可以整个流程整合在基类中,然后再在子类中具体实现一些特定的需求查看全部
-
模板方法的实现要素查看全部
-
具体子类中,可以可选的覆盖父类中的钩子方法查看全部
-
具体子类: 1:实现基类的抽象方法查看全部
-
基类中的模板方法:模板方法要设置成为finla,使得子类不能修改这个方法。原因是因为模板模式是要让子类自定义一些特定的方法,而不改变算法的整体结构查看全部
-
抽象基类中的钩子函数是让子类自己决定要不要调用基类中的某些方法查看全部
举报
0/150
提交
取消