【设计模式】Java设计模式 - 模板模式
Java设计模式 - 模板模式
不断学习才是王道
继续踏上学习之路,学之分享笔记
总有一天我也能像各位大佬一样
原创作品,更多关注我CSDN: 一个有梦有戏的人
准备将博客园、CSDN一起记录分享自己的学习心得!!!
分享学习心得,欢迎指正,大家一起学习成长!

简介
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
———— 菜鸟联盟
UML图:

模板模式实例
本次实验采用不同种奶茶制作的例子,奶茶类作为抽象类,提供制作奶茶过程的方法,需要子类实现的方法作为抽象方法。在定义两种不同的奶茶。最后通过测试得出结论。
本次实验的类图:

①、定义抽象类(模板类)
除了公共方法,其他变化的方法都由子类实现。
package com.lyd.demo.template;
/**
* @Author: lyd
* @Description: 抽象类 - 奶茶
* @Date: 2022-09-02
*/
public abstract class MilkTea {
final public void make() { // 子类不需要重写
pourTea();
pourMilk();
filterTea();
addMaterials();
stir();
success();
}
public void pourTea() {
System.out.println("倒入茶叶焖三分钟");
}
public void pourMilk() {
System.out.println("倒入牛奶加热至小泡");
}
public void filterTea() {
System.out.println("过滤茶叶");
}
public abstract void addMaterials(); // 添加东西,子类实现
public void stir() {
System.out.println("搅拌");
}
public abstract void success();
}
②、定义具体类
具体类,实现父类的抽象方法,这里只粘贴红豆奶茶类
package com.lyd.demo.subclass;
import com.lyd.demo.template.MilkTea;
/**
* @Author: lyd
* @Description: 红豆奶茶
* @Date: 2022-09-02
*/
public class RedBeanMilkTea extends MilkTea {
public void addMaterials() {
System.out.println("添加红豆");
}
public void success() {
System.out.println("红豆奶茶做好啦");
}
}
③、测试
通过调用make方法就可以自动调用子类的特有方法实现。
package com.lyd.demo.test;
import com.lyd.demo.subclass.PearlMilkTea;
import com.lyd.demo.subclass.RedBeanMilkTea;
import com.lyd.demo.template.MilkTea;
/**
* @Author: lyd
* @Description: 测试
* @Date: 2022-09-02
*/
public class TemplateTest {
public static void main(String[] args) {
MilkTea redBeanMilkTea = new RedBeanMilkTea();
redBeanMilkTea.make();
System.out.println("************************************************");
MilkTea pearlMilkTea = new PearlMilkTea();
pearlMilkTea.make();
}
}
运行结果

创作不易,可能有些语言不是很通畅,如有错误请指正,感谢观看!记得一键三连哦!
今天内容比较简单,很容易理解,设计模式一路过来也到了模板模式,一切还是很顺利的,也加深了对java面向对象的理解。
【设计模式】Java设计模式 - 模板模式的更多相关文章
- Java设计模式之《模板模式》及使用场景
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9558825.html 模板模式,顾名思义,就是通过模板拓印的方式. 定义模板,就是定义框 ...
- Head First 设计模式系列之一----模板模式(java版)
开篇序言:四人帮的设计模式对于我这个菜鸟看着打瞌睡,后面果断买了一本head first的,感觉还可以像看报纸似的,花了一个寒假的晚上看了大半,确实内容也挺吸引人的,讲的很风趣.否则我也不可能,大过年 ...
- 《JAVA设计模式》之模板模式(Template)
在阎宏博士的<JAVA与模式>一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式 ...
- 扯淡设计模式2:java,模板模式,
模板模式: package com.dayuanit.service; public abstract class UserService { public void login(String use ...
- 再起航,我的学习笔记之JavaScript设计模式30(简单模板模式)
简单模板模式 概念介绍 简单模板模式(Simple template): 通过格式化字符串拼凑出视图避免创建视图时大量节点操作,优化内存开销. 创建模板 在实际的业务中如果我们需要进行前后台交互,或多 ...
- 设计模式のTemplatePattern(模板模式)----行为模式
一.产生背景 在程序设计中,可能每个对象都有共同的地方,而此时如果每个对象定义一次,如下例子,每个对象都写Stay()方法,这样在每个类中都有很多相同的代码,此时,我们需要用到模板设计模式,来解决这个 ...
- 设计模式之——Template模板模式
Template模式又叫模板模式,是在父类中定义处理流程的框架,在子类中实现具体处理逻辑的模式.当父类的模板方法被调用时程序行为也会不同,但是,不论子类的具体实现如何,处理的流程都会按照父类中所定义的 ...
- 设计模式之GOF23模板模式
模板模式template method 场景:具有具体流程,但具体某一步的业务不同 到银行办理业务:排队取号,办理业务,给员工打分 请客吃饭:等待,点单,吃饭,结账 模板方法模式介绍:模板方法是编程常 ...
- Unity设计模式+Java设计模式,讲解+案例+PPT,一次性学会设计模式,拥抱高薪!
一个程序员对设计模式的理解:“不懂”为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式, ...
- java常用设计模式十:模板模式
一.定义 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 如果上面的话不好理解,请看下面的例子 二.示例 1)定义一个模 ...
随机推荐
- GameFramework食用指南
1.框架简介 GF框架分两部分,GameFramework(GF)和UnityGameFramework(UGF): 通过接口的形式对Unity引擎进行了解耦: GF独立于Unity,具体业务逻辑实现 ...
- 爬虫(6) - 网页数据解析(2) | BeautifulSoup4在爬虫中的使用
什么是Beautiful Soup库 Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能 它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简 ...
- 换根 DP 学习笔记
前言 没脑子选手什么都不会. 正文 先来写一下换根 DP 的特点或应用方面: 不同的点作为树的根节点,答案不一样. 求解答案时要求出每一个节点的信息. 无法通过一次搜索完成答案的求解,因为一次搜索只能 ...
- Autograd: 自动求导
Pytorch中神经网络包中最核心的是autograd包,我们先来简单地学习它,然后训练我们第一个神经网络. autograd包为所有在tensor上的运算提供了自动求导的支持,这是一个逐步运行的框架 ...
- Tapdata Cloud 2.1.4 来啦:数据连接又上新,PolarDB MySQL、轻流开始接入,可自动标记不支持的字段类型
需求持续更新,优化一刻不停--Tapdata Cloud 2.1.4 来啦! 最新发布的版本中,在新增数据连接之余,默认标记不支持同步的字段类型,避免因此影响任务的正常运行. 更新速览 ① 数 ...
- WCF全局捕获日志
/// <summary> /// WCF服务端异常处理器 /// </summary> public class WCF_ExceptionHandler : IErrorH ...
- 在 IDEA 里下个五子棋不过分吧?
大家好,我是二哥呀!今天给大家分享一个基于Netty的IDEA即时聊天插件,可以实现即时聊天.游戏对战(下棋). GitHub 地址:https://github.com/anlingyi/xecha ...
- GIS技术在医疗行业的应用:利用切片地图发布技术解决dmetrix数字病理切片在线浏览
最近一直在研究切片地图发布技术,解决各种矢量和栅格数据的切片地图制作和发布问题.这块的技术在土地评估和调查类公司中应用较多,因为他们经常需要使用各地地图,传统的文件管理方式很难适应工作现状,如果将各种 ...
- NOI / 2.5基本算法之搜索-6044:鸣人和佐助详解
总时间限制: 1000ms 内存限制: 65536kB 题目 佐助被大蛇丸诱骗走了,鸣人在多少时间内能追上他呢? 已知一张地图(以二维矩阵的形式表示)以及佐助和鸣人的位置.地图上的每个位置都可以走到, ...
- raspberrypi系统在加入k8s作为node节点时遇到的问题
新买的树莓派4b到货后就迫不及待的烧录上raspberrypi系统,将新派加入我的k8s集群,期间遇到了点小挫折,好歹也一个一个解决了: 一.kubelet版本不对导致无法加入k8s集群 在执行kub ...