设计模式-模板模式

背景

制作豆浆,流程:选材------》添加配料------》浸泡------》放到豆浆机

可以添加不同的配料

选材,浸泡,放到豆浆机对于所有豆浆都一样,可以利用模板模式简化

基本介绍

在一个抽象类中公开定义了执行它的模板,它的子类可以按需重写方法发实现,但调用将通过抽象类中定义的方法执行。

属于行为型模式。

模板类(抽象类)

定义了一个模板方法(抽象方法),和具体的执行方法(可抽象也可具体)。

举例:

模板方法:做豆浆

具体执行方法:选材,添加配料,浸泡,放到豆浆机

具体的制作类,继承自这个模板抽象类,

在使用时,通过使用具体的子类,完成使用。

具体实现

创建豆浆模板类(SoyaMilk),声明模板类方法make();

声明具体执行方法:select(),add(),soak(),beat()方法。

因为配料不同,所以add()方法可以时抽象方法,在子类中实现,其他方法可以直接在父类中定义。

在make()方法中调用这些具体的执行方法。

创建不同的子类BlackBean,RedBean继承自SoyaMilk,重写add()方法。

使用时,在客户端直接创建一个子类实例,调用make()方法即可完成

钩子方法

可以在模板类中定义一个方法,默认不做任何事。

举例:制作一杯不加任何调料的纯豆浆。

在SoyaMilk类中声明一个返回值为布尔值(true||bool)的钩子方法,给钩子方法一个默认返回值。

通过在子类中重写钩子方法,实现不添加调料的效果。

相关推荐
2401_840192275 分钟前
如何学习一门计算机技术
开发语言·git·python·devops
向阳25613 分钟前
SpringBoot+vue前后端分离整合sa-token(无cookie登录态 & 详细的登录流程)
java·vue.js·spring boot·后端·sa-token·springboot·登录流程
巷北夜未央19 分钟前
Python每日一题(14)
开发语言·python·算法
XiaoLeisj30 分钟前
【MyBatis】深入解析 MyBatis XML 开发:增删改查操作和方法命名规范、@Param 重命名参数、XML 返回自增主键方法
xml·java·数据库·spring boot·sql·intellij-idea·mybatis
风象南31 分钟前
SpringBoot实现数据库读写分离的3种方案
java·spring boot·后端
振鹏Dong37 分钟前
策略模式——本质是通过Context类来作为中心控制单元,对不同的策略进行调度分配。
java·策略模式
ChinaRainbowSea1 小时前
3. RabbitMQ 的(Hello World) 和 RabbitMQ 的(Work Queues)工作队列
java·分布式·后端·rabbitmq·ruby·java-rabbitmq
雾月551 小时前
LeetCode 914 卡牌分组
java·开发语言·算法·leetcode·职场和发展
Y.O.U..1 小时前
今日八股——C++
开发语言·c++·面试
melck1 小时前
liunx日志查询常用命令总结
java·服务器·网络