首页 > 其他分享 >18.设计模式-模板方法

18.设计模式-模板方法

时间:2022-10-11 22:24:47浏览次数:74  
标签:18 void System class addMterial Cake 设计模式 public 模板

//1.定义模板抽象父类,将特有的业务定义为抽象方法,定义钩子函数
//2.子类继承抽象父类,实现抽象方法
//3.测试
public abstract class Cake {

//定义成final,禁止子类重写
final void make(){
    this.prepare();
    
    if(customAdd()){
        this.addMterial();
    }
    this.cook();
}

void prepare(){
    System.out.println("开始准备...");
}

//子类需要实现的特定方法
abstract void addMterial();

void cook(){
    System.out.println("开始加热....");
}

//钩子函数,自定义是否调用
boolean customAdd(){
    return true;
}

}

public class FruitCake extends Cake{
void addMterial() {
System.out.println("加入水果...");
}
}

public class WurenCake extends Cake{
void addMterial() {
System.out.println("加入五仁....");
}
}

//普通Cake,通过重写钩子函数
public class CustomCake extends Cake{
void addMterial() {
//空实现
}

@Override
boolean customAdd() {
    return false;
}

}

public class Test {
public static void main(String[] args) {
WurenCake wuren = new WurenCake();
wuren.make();

    FruitCake fruitCake = new FruitCake();
    fruitCake.make();

    CustomCake customCake = new CustomCake();
    customCake.make();
}

}

标签:18,void,System,class,addMterial,Cake,设计模式,public,模板
From: https://www.cnblogs.com/NIAN2011/p/16782847.html

相关文章

  • 【JS设计模式笔记】神奇的魔术师-简单工厂模式(创建型)
    简单工厂模式(SimpleFactory):又叫静态工厂方法,由一个工厂对象决定创建某一种产品对象类的实例。主要用来创建同一类对象。第一次需求开发一个登录模块的需求,用户名输入框......
  • camunda_18_user_task_assignment
    Camunda后台数据库内建有几个人员/组织数据表,但在Usertaskassignment方便,并不强制我们要将自己的人员/组织数据导入到这些table中.举例讲,我们需要将某个usertas......
  • P3808 【模板】AC 自动机(简单版)
    P3808KMP用来求单模式串的匹配,AC自动机用来求多模式串的匹配。就是给你n个模式串,再给你一个文本串,求有多少个模式串在文本串中出现过。AC自动机的数据结构基于trie数,像K......
  • 18、JAVA入门——接口
    目录​​❤️ 1、生活中的接口​​​​❤️ 2、定义和实现一个简单的接口​​​​❤️ 3、更复杂的接口​​​​❤️ 4、使用接口的优势​​​​❤️ 5、抽象类VS接口​​......
  • 18、Java——NullPointerException异常的原因和解决办法
    目录 ​​1、NullPointerException异常原因​​​​2、NullPointerException异常解决办法​​1、NullPointerException异常原因        一般空指针的原因就是:当前......
  • 4. 设计模式--原型模式
    原型模式在java中我们知道通过new关键字创建的对象是非常繁琐的(类加载判断,内存分配,初始化等),在我们需要大量对象的情况下,原型模式就是我们可以考虑实现的方式。原型......
  • Java设计模式之 装饰模式实验报告书
    Java设计模式之装饰模式实验报告书姓名:班级:学号:实验三:装饰模式的应用一、实验目的熟练使用JAVA实现装饰模式,理解设计模式的模式动机,掌握模式结构,学习如何使用代码实现......
  • 设计模式二(建造者模式)
    建造者模式   设计模式的关键步骤是    importjava.util.ArrayList;importjava.util.List;publicclassMeal{privateList<Item>items=......
  • [模板]点分治
    洛谷p3806code#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintmaxn=1e5+7;constintinf=1e7;intn,m,maxp[maxn],siz[......
  • Oracle ORA-01850: 小时值必须介于 0 和 23 之间
    ORA-01850:小时值必须介于0和23之间selectto_char(to_date(tran_time,'hh24miss'),'hh24:mi:ss')fromtable_name;tran_time标准格式为6位:092436(9点24分36......