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面向对象的理解。

最新文章

  1. hdu 1142(DFS+dijkstra)
  2. 今天想把iphone4刷成ios7.3beta,折腾半天,成功
  3. js,jquery概念理解
  4. vsftpd配置文件说明
  5. 来认识下less css
  6. Android入门3:从Toolbar到Material Design
  7. [转载]一个小例子介绍Obj-C的函数命名方式
  8. load Event
  9. 第十七章——配置SQLServer(3)——配置“对即时负载的优化”
  10. 远程调用之RMI技术
  11. TypeScript 学习二 表达式和循环
  12. 简化布隆过滤器——BitMap
  13. Python:logging 的巧妙设计
  14. Java中解决前端的跨域请求问题
  15. Annotation 的第一个工程
  16. Testing - 软件测试知识汇总
  17. 删除数据库字段一样的row, 并增加唯一索引
  18. C# 源码 AForge.NET
  19. nginx init 官方启动脚本
  20. Multi-cloud Kubernetes with Triton

热门文章

  1. HDFS数据平衡
  2. Autograd: 自动求导
  3. 用cmd命令进行磁盘清理(主要是系统盘)
  4. Hippo4J v1.3.1 发布,增加 Netty 监控上报、SpringCloud Hystrix 线程池监控等特性
  5. 使用传统的方式遍历集合对集合中的数据进行过滤和使用Stream流的方式遍历集合对集合中的数据进行过滤
  6. Java--集合框架详解
  7. 6.1 NOI 模拟
  8. 『叶问』#41,三节点的MGR集群,有两个节点宕机后还能正常工作吗
  9. java-Servlet-cookie and session
  10. OpenStack-iaas之“先点”云平台安装