Java设计模式 – 模板模式
? 不断学习才是王道
? 继续踏上学习之路,学之分享笔记
? 总有一天我也能像各位大佬一样
?原创作品,更多关注我CSDN: 一个有梦有戏的人
?准备将博客园、CSDN一起记录分享自己的学习心得!!!
?分享学习心得,欢迎指正,大家一起学习成长!
目录
- Java设计模式 – 模板模式
- 简介
- 模板模式实例
- ①、定义抽象类(模板类)
- ②、定义具体类
- ③、测试
简介
在模板模式(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面向对象的理解。