public  abstract class SoyaMilk {//模版方法 可以做成finaL,不让子类去覆盖final void make(){select();if(customerWantCondiments()){addCondiments();}soak();beat();}void select(){System.out.println("第一步,请选择好的新鲜黄豆");}//添加不同的配料,抽象方法,子类具体实现abstract  void addCondiments();//浸泡void soak(){System.out.println("第三部,黄豆和配料开始浸泡,需要三个小时");}void beat(){System.out.println("第四步:黄豆和配料放到豆浆机去打碎");}//钩子方法,决定是否需要添加配料boolean customerWantCondiments(){return  true;}
}

public class ReadBeanSoyaMilk extends SoyaMilk{@Overridevoid addCondiments() {System.out.println("加入上好的红豆");}
}

public class PureSoyaMilk  extends SoyaMilk{@Overridevoid addCondiments() {System.out.println("2112");}@Overrideboolean customerWantCondiments() {return false;}
}

public class PeanutSoyaMilk extends SoyaMilk{@Overridevoid addCondiments() {System.out.println("加入上好的花生");}
}

public class Cilent {public static void main(String[] args) {//制作红豆豆浆SoyaMilk readBeanSoyaMilk = new ReadBeanSoyaMilk();readBeanSoyaMilk.make();//制作花生豆浆SoyaMilk soyaMilk = new PeanutSoyaMilk();soyaMilk.make();//制作纯豆浆SoyaMilk ps =  new PureSoyaMilk();ps.make();}
}

设计模式之模版方法模式的钩子方法相关推荐

  1. 从FLC中学习的设计模式系列-创建型模式(3)-工厂方法

    工厂方法是一组方法, 他们针对不同条件返回不同的类实例,这些类一般有共同的父类. 工厂方法模式 来自: http://zh.wikipedia.org/wiki/工厂方法模式 工厂方法模式 是一种面向 ...

  2. 23种设计模式之简单工厂模式,工厂方法模式,抽象工厂模式详解

    工厂模式详解 1. 简单工厂模式 1.1 需求分析 1.2 使用传统方式实现 1.2.1 类图 1.2.2 代码实现 1.2.2.1 新建pizza抽象类 1.2.2.2 希腊披萨实现类 1.2.2. ...

  3. 【地铁上的设计模式】--创建型模式:工厂方法模式

    什么是创建模式 创建型模式是指处理对象创建的设计模式,它们的共同目标是通过某种方式控制对象的创建,以达到更灵活.更可扩展的设计. 创建型模式通常涉及到将对象的创建与使用分离,通过专门的工厂类.构造函数 ...

  4. Java设计模式之 简单工厂模式和工厂方法实验报告书

    目录 Java设计模式之 1 简单工厂模式和工厂方法实验报告书 1 实验四:简单工厂模式和工厂方法 2 一.实验目的 2 二.实验内容 2 三.实验步骤 2 3.1简单工厂模式:女娲 2 3.2简单工 ...

  5. 设计模式——通过简单工厂模式推出工厂方法模式

    文章目录 工厂模式简介 简单工厂模式 工厂方法模式 工厂模式简介 工厂模式,是通过一个工厂来进行创建对象的,我们不用去new对象了,而是直接在工厂中get对象.但是,这样做的好处是什么呢? 实现了解耦 ...

  6. 初识设计模式之简单工厂模式、工厂方法模式、抽象工厂模式

    简单工厂模式 工厂方法模式 抽象工厂模式 ​ 工厂顾名思义就是生产产品的意思,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式.该模式 ...

  7. 工厂方法模式_工厂方法模式

    工厂方法模式是简单工厂模式的升级版,简单工厂模式不符合设计模式的原则(即:单一职责,开闭原则) 优点: 职责明确,扩展方便 缺点:需要创建多个工厂 实现步骤: 1.将工厂通用方法抽取接口 (例如:IF ...

  8. java工厂方法模式_java-工厂方法模式的优势

    从wiki开始, 工厂方法设计模式解决了以下问题: >如何创建对象,以便子类可以重新定义要实例化的类? >类如何将实例化延迟到子类? 例如,MazeGame提供了实例化功能来像MagicM ...

  9. UnityMirror学习笔记(5):NetworkBehaviour 参数和方法接口 与 钩子方法 与 一些注意点

    Mirror是一个简单高效的开源的Unity多人游戏网络框架. 官方文档链接: https://mirror-networking.gitbook.io/docs NetworkBehaviour是M ...

最新文章

  1. php 多人游戏_「谁会是下一个王者农药」云服务器如何搭建游戏服务器?
  2. K-Median Subsequence
  3. 阿里云 redis 公网连接
  4. 【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )
  5. Go性能测试benchmark
  6. java调用go接口_go语言调用API实线分词
  7. linux 发文件被过滤的内容,linux文件过滤以及内容编辑处理
  8. windows cmd install nscp
  9. Spring Boot干货系列:数据存储篇-SQL关系型数据库之MyBatis的使用
  10. cad线段总和lisp_autocadlisp统计多段线方法
  11. 如何科学评估疫情对业务的影响?
  12. omf多路径 oracle_ORACLE OMF
  13. CorelDraw绘图技巧十九招
  14. h5获取android手机版本,Vue.js怎么获取手机系统型号、版本、浏览器类型
  15. 如何批量修改文件夹中的照片名称
  16. 删除导航窗格多余的图标,如Onedrive、3D对象
  17. 从入门到断送职业生涯只差这几步
  18. JETSON TX2烧写系统
  19. 2021年YCC发展路线图
  20. 以太坊钱包2-Android-转账(ETH)

热门文章

  1. angularAMD快速入门
  2. 数据库SQL,技巧篇
  3. halcon edges_sub_pix算子
  4. struct和typedef struct在C与C++中用法
  5. ANSYS——后处理中单元表(ELEMENT table)的作用、创建、使用
  6. 学习笔记(38):Python实战编程-窗体显示
  7. win10 下pycharm+anaconda 编译生成pyd文件
  8. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波11 - 直方图处理 - 使用直方图统计量增强图像
  9. python中加入绝对路径_理解Python中的绝对路径和相对路径
  10. 【VS开发】这就是COM组件