为了账号安全,请及时绑定邮箱和手机立即绑定
  • 鉤子掛載
    查看全部
  • 抽象方法
    查看全部
  • 抽象及基類
    查看全部
  • 1. if(isCustomerWantsCondiments()){ //步骤4 加入调味料 addCondiments(); } /* * Hook, 钩子函数,提供一个默认或空的实现 * 具体的子类可以自行决定是否挂钩以及如何挂钩 * 询问用户是否加入调料 */ protected boolean isCustomerWantsCondiments() { return true; } 2.tea.java @Override /* * 子类通过覆盖的形式选择挂载钩子函数 * @see com.imooc.pattern.template.RefreshBeverage#isCustomerWantsCondiments() */ protected boolean isCustomerWantsCondiments(){ return false; }
    查看全部
  • public static void main(String[] args) { System.out.println("制备咖啡..."); RefreshBeverage b1 = new Coffee(); b1.prepareBeverageTemplate(); System.out.println("咖啡好了!"); System.out.println("\n******************************************"); System.out.println("制备茶..."); RefreshBeverage b2 = new Tea(); b2.prepareBeverageTemplate(); System.out.println("茶好了!"); }
    查看全部
  • 1.coffee.java /* * 具体子类,提供了咖啡制备的具体实现 */ public class Coffee extends RefreshBeverage { @Override protected void brew() { System.out.println("用沸水冲泡咖啡"); } @Override protected void addCondiments() { System.out.println("加入糖和牛奶"); } } 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 /* * 子类通过覆盖的形式选择挂载钩子函数 * @see com.imooc.pattern.template.RefreshBeverage#isCustomerWantsCondiments() */ protected boolean isCustomerWantsCondiments(){ return false; } } 3.test.java:
    查看全部
  • /* * 抽象基类,为所有子类提供一个算法框架 * * 提神饮料 */ public abstract class RefreshBeverage { /* * 制备饮料的模板方法 * 封装了所有子类共同遵循的算法框架 */ public final void prepareBeverageTemplate(){//final定義的方法不能被重寫 //步骤1 将水煮沸 boilWater(); //步骤2 泡制饮料 brew(); //步骤3 将饮料倒入杯中 pourInCup(); } /* * 基本方法,将水煮沸 */ private void boilWater() { System.out.println("将水煮沸"); } /* * 基本方法,将饮料倒入杯中 */ private void pourInCup() { System.out.println("将饮料倒入杯中"); } /* * 抽象的基本方法,泡制饮料 */ protected abstract void brew(); /* * 抽象的基本方法, 加入调味料 */ protected abstract void addCondiments(); }
    查看全部
  • 大致框架
    查看全部
  • 生活中的模板
    查看全部
  • 模板模式的缺点在于Java是单继承
    查看全部
  • 用抽象基类定义框架 1.创建抽象类 ---public abstract class RefreshBeverage 2.创建模版方法 ---public final void prepareBeverageTemplate() ---boilWater(); ---brew(); ---pourInCup(); ---addCondiments(); 3.实现并私有化基本方法 ---private 4.添加抽象的基本方法 ---protected abstract
    查看全部
  • 什么是模版方法? --算法执行的统一框架,模版方法模式定义了一个操作中的算法骨架,将一些步骤延迟到子类实现,使得子类可以在不改变算法结构的同时就重新定义该算法的某些特定步骤。 ----Step1、Step2、....Step n Step n 为斜体时表示未定义具体实行方法
    查看全部
  • 什么是模版? --生活中的事例: ----银行办理业务 ------Step1进门取号、Step2填写单据、Step3等待叫号、Step4窗口办理 ----奥运会开幕 ------Step1升旗奏歌、Step2致辞讲话、Step3文艺汇演、Step4入场仪式
    查看全部
  • 模板方法中需要抽象出一个算法框架(一些列步骤) 模板方法需要声明为final,防止子类重写定义好的算法框架 需要子类重写的方法声明为abstract 定义钩子方法,为子类的实现提供更大灵活性
    查看全部
  • 不让子类改变结构用final来修饰
    查看全部

举报

0/150
提交
取消
课程须知
本课程的学习,需要小伙伴们具有面向对象基础知识及 Java 语言基础。如果您是新手,建议先移步 《Java入门第一季》和《Java入门第二季》
老师告诉你能学到什么?
1、什么是模板方法模式 2、模板方法模式如何实现 3、如何在模板方法模式中增加灵活性 4、专门行业是如何使用模板方法模式

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!