设计模式之模板模式TemplatePattern(五)

news2024/10/6 18:28:44

一、模板模式介绍

模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern), 在一个抽象类公开定义了执行它的方法的模板。它的子类可以更需要重写方法实现,但可以成为典型类中定义的方式进行。

模板模式适用于通用步骤的操作,比如做菜,不管你是西红柿炒鸡蛋,还是土豆炖牛肉实现步骤都是一样的,备料,做菜,上菜。
再比如投放系统,不管你是投放巨量引擎,广点通还是百度,前期工作实现步骤也都是一样的,配置物料信息,构建投放对象,投放广告。

二、代码实例

1、DishTemplate抽象类

package com.xu.demo.templatePattern;

/**
 * 做菜模板类
 * 用于定义做菜的执行步骤,所有菜都可以按照这种方式做菜
 *
 */
public abstract class DishTemplate {
    /**
     * 做菜执行步骤
     */
    public final void doDish() {
        this.preparation();
        this.doing();
        this.carriedDishes();
    }

    /**
     * 备料
     */
    public abstract void preparation();

    /**
     * 做菜
     */
    public abstract void doing();

    /**
     * 上菜
     */
    public abstract void carriedDishes();

}



 2、DishEggsWithTomato子类

package com.xu.demo.templatePattern;

/**
 * 西红柿炒鸡蛋
 *
 */
public class DishEggsWithTomato extends DishTemplate {
    @Override
    public void preparation() {
        System.out.println("准备西红柿鸡蛋...");
    }

    @Override
    public void doing() {
        System.out.println("开始炒西红柿鸡蛋...");
    }

    @Override
    public void carriedDishes() {
        System.out.println("西红柿鸡蛋装盘...");
    }
}


3、DishOnionWithTofu子类

package com.xu.demo.templatePattern;

/**
 * 小葱拌豆腐
 *
 */
public class DishOnionWithTofu extends DishTemplate {
    @Override
    public void preparation() {
        System.out.println("准备小葱豆腐...");
    }

    @Override
    public void doing() {
        System.out.println("开始炒小葱拌豆腐...");
    }

    @Override
    public void carriedDishes() {
        System.out.println("小葱拌豆腐装盘...");
    }
}

4、TempaltePattern类

package com.xu.demo.templatePattern;

/**
 * 模板模式
 * 抽象父类定义方法模板,子类自定义实现方式。
 *
 */
public class TempaltePattern {

    public static void main(String[] args) {

        System.out.println("----------西红柿炒鸡蛋----------");
        DishTemplate eggsWithTomato = new DishEggsWithTomato();
        eggsWithTomato.doDish();

        System.out.println("----------小葱拌豆腐----------");
        DishTemplate onionWithTofu = new DishOnionWithTofu();
        onionWithTofu.doDish();
    }
}

 运行结果:

三、Spring中的模板模式 

1、RestTemplate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1640181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Springboot的校园食堂订餐系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园食堂订餐系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

在离线环境中将 CentOS 7.5 原地升级并迁移至 RHEL 7.9

《OpenShift / RHEL / DevSecOps 汇总目录》 说明 本文将说明如何在离线环境中将 CentOS 7.5 升级并迁移至 RHEL 7.9。为了简化准备过程,本文前面将在在线环境中安装用到的各种所需验证软件,而在后面升级迁移的时候再切换到由 ISO 构成的离线 Yum Repo…

前端工程化03-贝壳找房项目案例JavaScript常用的js库

4、项目实战(贝壳找房) 这个项目包含,基本的ajax请求调用,内容的渲染,防抖节流的基本使用,ajax请求工具类的封装 4.1、项目的接口文档 下述接口文档: 简述内容baseURL:http://123.207.32.32…

macOS sonoma 14.4.1编译JDK 12

macOS sonoma 14.4.1编译JDK 12 环境参考文档开始简述问题心路历程着手解决最终解决(前面有点啰嗦了,可以直接看这里) 记录一次靠自己看代码解决问题的经历(总之就是非常开心)。 首先,先diss一下bing,我差一点就放弃了。 环境 macOS sonom…

excel怎么删除条件格式规则但保留格式?

这个问题的意思就是要将设置的条件格式,转换成单元格格式。除了使用VBA代码将格式转换外,还可以用excel自己的功能来完成这个任务。 一、将条件格式“留下来” 1.设置条件格式 选中数据,点击开始选项卡,设置条件格式&#xff0…

2024五一数学建模C题煤矿深部开采冲击地压危险预测原创论文分享

大家好,从昨天肝到现在,终于完成了2024五一数学建模竞赛C题的完整论文啦。 实在精力有限,具体的讲解大家可以去讲解视频: 2024五一数学建模C题完整原创论文讲解,手把手保姆级教学!_哔哩哔哩_bilibili 202…

移动机器人系统与技术:自动驾驶、移动机器人、旋翼无人机

这本书全面介绍了机器人车辆的技术。它介绍了道路上自动驾驶汽车所需的概念。此外,读者可以在六足机器人的构造、编程和控制方面获得宝贵的知识。 这本书还介绍了几种不同类型旋翼无人机的控制器和空气动力学。它包括各种旋翼推进飞行器在不同空气动力学环境下的模…

ChatGPT的AI“记忆”可以记住付费客户的偏好

通过记住有关 ChatGPT Plus 订阅者的详细信息,OpenAI 的聊天机器人添加了更多个人助理风格的功能 OpenAI 在今年二月宣布了 “记忆 ”功能,该功能允许 ChatGPT 更永久地存储查询、提示和其他自定义功能。当时,只有 “一小部分 ”用户可以使用…

虚拟机网络桥接模式无法通信,获取到的ip为169.254.X.X

原因:VMware自动选择的网卡可能不对 解决:编辑-虚拟网络编辑器-更改桥接模式-选择宿主机物理网卡,断开虚拟机网络连接后重新连接即可

精简函数栈帧:优化创建和销毁过程的完全解析(建议收藏,提升内功)

🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 🌈C笔记专栏: C笔记 🌈喜欢的诗句:无人扶我青云志 我自踏雪至山巅 文章目录 【前文】一、函数栈帧的概念(stack frame&#xff…

uniapp 自定义相机插件(组件版、缩放、裁剪)组件 Ba-CameraView

自定义相机插件(组件版、缩放、裁剪) Ba-CameraView 简介(下载地址) Ba-CameraView 是一款自定义相机拍照组件,支持任意界面,支持裁剪 支持任意自定义界面支持手势缩放支持裁剪(手势拖动、比…

等级保护测评一般多长时间能做完?

一个二级或三级的系统,整体持续周期一到两个月 具体时间还要根据信息系统数量,及信息系统的规模,以及测评方与被测方的配合情况等,有所增减。 现场测评周期一般一周左右 小规模安全整改,包括管理制度策略配置技术&a…

【算法设计与分析】实验报告c++python实现(TSP问题、哈夫曼编码问题、顾客安排问题、最小生成树问题、图着色问题)

一、实验目的 1.加深学生对贪心算法设计方法的基本思想、基本步骤、基本方法的理解与掌握; 2.提高学生利用课堂所学知识解决实际问题的能力; 3.提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 用贪心算…

基于Springboot的web后端开发三层架构上手实操

引言 我们拿到了xml文件 我们要将将xml文件中的数据加载并解析 完成数据的处理 并且返回给前端页面(result格式) 1.将xml文件放在resources目录下 xml是我们需要解析的文件 查看xml文件 2.在springboot中引入dom4j依赖 解析xml需要在springboot中引入dom4j依赖 这边我们…

iOS 创建依赖其他开源库的开源库

参考文章(感激各位大神前路的明灯) 参考文章一 参考项目 整体流程 流程简介 1)使用pod命令行创建本地项目和git仓库并回答终端里的四个问题 2)编辑podspec文件 3)将需要开源的代码添加到Development Pods文件夹中&am…

2024第84届中国(云南昆明)教育装备展示会

关于第84届中国教育装备展示会将在云南昆明举办! 谨此奉邀! 第84届中国教育装备展示会组委会 一、展会时间、地点 布展时间:2024年10月22日-24日 开展时间:2024年10月25日-27日 撤展时间:2024年10月27日 16:00-24:00 地点&a…

2024年5月前端面试记录:裸辞、旅游、面试

在职期间面试 富途 有效括号匹配 判断b是否是a的子集&#xff08;a和b有重复元素&#xff0c;要求b的同个元素出现次数<a的同个元素出现次数&#xff09; 离职原因 最有挑战的项目 技术分享做过哪些 如何发现用户痛点并解决 vue和react的相同点和不同点 单项数据流…

《有限元分析及应用》《有限元分析基础教程》-曾攀-清华大学|pdf电子书+有限元分析及应用视频教程(全85讲) 曾攀、雷丽萍 ​​​+课件PPT

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

Java -- (part20)

一.Map集合 1.概述 双列集合的顶级接口 2.实现类 HashMap 特点: a.key唯一,value可重复->如果key重复了,会发生value覆盖 b.无序 c.无索引 d.线程不安全 e.可以存null键null值 数据结构: 哈希表 方法: LinkedHashMap 特点: a.key唯一,value可重复->如果ke…

基于 Spring Boot 博客系统开发(五)

基于 Spring Boot 博客系统开发&#xff08;五&#xff09; 本系统是简易的个人博客系统开发&#xff0c;为了更加熟练地掌握 SprIng Boot 框架及相关技术的使用。&#x1f33f;&#x1f33f;&#x1f33f; 基于 Spring Boot 博客系统开发&#xff08;四&#xff09;&#x1f…