首页 > 其他分享 >设计模式之模版方法模式的钩子方法

设计模式之模版方法模式的钩子方法

时间:2023-02-14 16:04:41浏览次数:38  
标签:SoyaMilk 模版 void System 钩子 println 设计模式 public out


设计模式之模版方法模式的钩子方法_ide

 

设计模式之模版方法模式的钩子方法_java_02

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;
}
}

设计模式之模版方法模式的钩子方法_java_03

 

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

 

设计模式之模版方法模式的钩子方法_html_04

public class PureSoyaMilk  extends SoyaMilk{
@Override
void addCondiments() {
System.out.println("2112");
}

@Override
boolean customerWantCondiments() {
return false;
}
}

设计模式之模版方法模式的钩子方法_System_05

 

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

设计模式之模版方法模式的钩子方法_java_06

 

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();
}
}

设计模式之模版方法模式的钩子方法_html_07

 

 

标签:SoyaMilk,模版,void,System,钩子,println,设计模式,public,out
From: https://blog.51cto.com/u_15258465/6056095

相关文章

  • 代理设计模式
    代理设计模式​​1、代理设计模式​​​​1.1静态代理模式​​​​1.2动态代理模式​​1、代理设计模式  所谓代理,就是替别人完成一些事情。在Java开发中,我们也会遇到一......
  • 什么是设计模式?
    所谓设计模式,就是对经常出现的软件设计问题的成熟解决方案。很多人把设计模式想象成非常高深的概念,实际上设计模式仅仅是对特定问题的一种惯性思维。有些人喜欢抱着一本设......
  • 设计模式-简单工厂类
    简单工厂模式一个工厂类根据传入的参数,动态的决定去创建哪一个产品类。、前言介绍如果想要实现一个计算器功能,前台页面输入数字和运算符号,后台该如何去实现简单版本......
  • mysql 数据库的一些参数,常用模版和调优方式
    innodb_buffer_pool_size:这个参数是Mysql数据库最重要的参数之一,表示InnoDB类型的表和索引的最大缓存。它不仅仅缓存索引数据,还会缓存表的数据。这个值越大,查询......
  • react实战笔记129:自定义钩子
    捕捉异常的时候数据代码格式类似   使用数据......
  • 好客租房63-组件的生命周期三个阶段-5不常用钩子函数介绍
      ......
  • CSS架构之BEM设计模式
    为什么需要CSS架构?其实在日常开发CSS当中,会遇到许多的问题,使用设计模式能够很好的解决。例如在日常开发项目,需要组件化时,组件内部的class样式类管理就非常的杂乱。大部分......
  • MFC-MouseProc鼠标钩子处理函数
     POINTpos={0,0};CStringstrx;HWNDhwnd;LRESULTCALLBACKMouseProc(intnCode,WPARAMwParam,LPARAMlParam)//参数1:当nCode=HC_ACTION时,wParam和lParam......
  • 前端设计模式:观察者与发布订阅模式
    观察者模式描述:观察者模式(ObserverPattern)由被观察者和观察者组成,观察者可以是多个,被观察者维护着多个观察者,如添加或删除观察者;当被观察着数据变化时,会通过广播的方式......
  • 设计模式(七)----创建型模式之建造者模式
    1、概述将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。分离了部件的构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的......