当前位置: 首页 > news >正文

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

一、模板模式介绍

模板方法模式(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 {@Overridepublic void preparation() {System.out.println("准备西红柿鸡蛋...");}@Overridepublic void doing() {System.out.println("开始炒西红柿鸡蛋...");}@Overridepublic void carriedDishes() {System.out.println("西红柿鸡蛋装盘...");}
}

3、DishOnionWithTofu子类

package com.xu.demo.templatePattern;/*** 小葱拌豆腐**/
public class DishOnionWithTofu extends DishTemplate {@Overridepublic void preparation() {System.out.println("准备小葱豆腐...");}@Overridepublic void doing() {System.out.println("开始炒小葱拌豆腐...");}@Overridepublic 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.lryc.cn/news/343005.html

相关文章:

  • 划重点!PMP报考条件、报考步骤、考试内容、适合人群
  • Java | Leetcode Java题解之第74题搜索二维矩阵
  • C#高级编程笔记-泛型
  • (超简单)SpringBoot中简单用工厂模式来实现
  • java中的条件、循环和scanner类
  • 【Qt QML】Frame组件
  • Web API之DOM
  • windows驱动开发-内核编程技术汇总(六)
  • Windows Server 2019虚拟机安装
  • 【软件工程】详细设计
  • 在K8S中,集群可以做哪些优化?
  • 【C++】从零开始认识多态
  • 为什么叫“机器学习”Machine Learning 而不是“计算机学习”——深度学习Note
  • Spring Boot集成RabbitMQ-之6大模式总结
  • 后端开发面经系列 -- 滴滴C++一面面经
  • Three.js的几何形状
  • 设计模式——单例模式(Singleton)
  • springboot3项目练习详细步骤(第二部分:文章分类模块)
  • VUE中父组件向子组件进行传值
  • alpine安装中文字体
  • JavaScript学习—JavaScript高级
  • CompletableFuture使用案例
  • 安卓使用so库
  • 【介绍下LeetCode的使用方法】
  • 重学java 30.API 1.String字符串
  • 【区块链】共识算法简介
  • Qt---day2-信号与槽
  • Python中设计注册登录代码
  • AI伦理和安全风险管理终极指南
  • golang testing使用