【设计模式】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)定义一个模 ...
随机推荐
- 【跟着大佬学JavaScript】之节流
前言 js的典型的场景 监听页面的scroll事件 拖拽事件 监听鼠标的 mousemove 事件 ... 这些事件会频繁触发会影响性能,如果使用节流,降低频次,保留了用户体验,又提升了执行速度,节省 ...
- 服务器宕机了,Kafka 消息会丢失吗?
大家好,我是树哥. 消息队列可谓是高并发下的必备中间件了,而 Kafka 作为其中的佼佼者,经常被我们使用到各种各样的场景下.随着 Kafka 而来得,还有三个问题:消息丢失.消息重复.消息顺序.今天 ...
- nginx虚拟主机测试
一.基于域名的nginx虚拟主机 基于域名的nginx虚拟主机的操作步骤: 1 .为虚拟主机提供域名和IP的映射(也可以使用DNS正向解析) echo "172.16.10.101 www. ...
- OpenCV视频防抖技术解析
视频防抖有很多种技术,各有优劣,主流的目前分为三种:EIS电子防抖EIS电子防抖是通过软件算法实现防抖的.其技术运作原理是通过加速度传感器和陀螺仪模块侦测手机抖动的幅度,从而来动态调节整ISO.快门以 ...
- 同时安装py2和py3-安装多版本python
遇到问题和需求 我的电脑环境:先安装py2再安装py3,平时我工作中是使用python2,如何保证两个版本共存且让代码来选择要使用的版本. 遇到问题 在cmd中输入python,进入的是py2的环境, ...
- 用户认证(Authentication)进化之路:由Basic Auth到Oauth2再到jwt
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_98 用户认证是一个在web开发中亘古不变的话题,因为无论是什么系统,什么架构,什么平台,安全性是一个永远也绕不开的问题 在HTTP ...
- 别无分号只此一家,Python3接入支付宝身份认证接口( alipay.user.certify)体系(2021年最新攻略)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_184 目前国内身份认证体系做的比较不错的大抵就是支付宝和微信两家了,支付宝的身份验证基于支付宝app的实人认证能力,采用多因子认证 ...
- 论文翻译:2022_Time-Frequency Attention for Monaural Speech Enhancement
论文地址:单耳语音增强的时频注意 引用格式:Zhang Q, Song Q, Ni Z, et al. Time-Frequency Attention for Monaural Speech Enh ...
- mybatis 05: mybatis中的动态代理
mybatis中动态代理存在的意义 图示 图示分析 分层说明:界面层为第一层,业务逻辑层(接口层 + 实现层)为第二层,数据访问层(接口层 + 实现层)为第三层 业务逻辑层和数据访问层:分别分两层来开 ...
- Spring源码 14 IOC refresh方法9
参考源 https://www.bilibili.com/video/BV1tR4y1F75R?spm_id_from=333.337.search-card.all.click https://ww ...