【设计模式】Java设计模式 - 模板模式

简介: 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。

Java设计模式 - 模板模式

😄 不断学习才是王道
🔥 继续踏上学习之路,学之分享笔记
👊 总有一天我也能像各位大佬一样
🏆原创作品,更多关注我CSDN: 一个有梦有戏的人
🌝分享学习心得,欢迎指正,大家一起学习成长!

java设计模式2.jpg

简介

在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
                                                                                                                                                    ———— 菜鸟联盟
UML图:
模板模式.jpg

模板模式实例

本次实验采用不同种奶茶制作的例子,奶茶类作为抽象类,提供制作奶茶过程的方法,需要子类实现的方法作为抽象方法。在定义两种不同的奶茶。最后通过测试得出结论。
本次实验的类图:
image.png

①、定义抽象类(模板类)

除了公共方法,其他变化的方法都由子类实现。

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();
    }
}

运行结果
image.png

👍创作不易,可能有些语言不是很通畅,如有错误请指正,感谢观看!记得一键三连哦!👍

今天内容比较简单,很容易理解,设计模式一路过来也到了模板模式,一切还是很顺利的,也加深了对java面向对象的理解。

相关文章
|
1月前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
|
1月前
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
25天前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
1月前
|
设计模式 Java 数据库连接
Java编程中的设计模式:单例模式的深度剖析
【10月更文挑战第41天】本文深入探讨了Java中广泛使用的单例设计模式,旨在通过简明扼要的语言和实际示例,帮助读者理解其核心原理和应用。文章将介绍单例模式的重要性、实现方式以及在实际应用中如何优雅地处理多线程问题。
38 4
|
1月前
|
设计模式 安全 Java
Kotlin - 改良设计模式 - 构建者模式
Kotlin - 改良设计模式 - 构建者模式
|
1月前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
45 1
|
2月前
|
搜索推荐 Java 数据库连接
Java|在 IDEA 里自动生成 MyBatis 模板代码
基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
39 6
|
2月前
|
设计模式 Java 程序员
[Java]23种设计模式
本文介绍了设计模式的概念及其七大原则,强调了设计模式在提高代码重用性、可读性、可扩展性和可靠性方面的作用。文章还简要概述了23种设计模式,并提供了进一步学习的资源链接。
54 0
[Java]23种设计模式
|
1月前
|
设计模式 JavaScript Java
Java设计模式:建造者模式详解
建造者模式是一种创建型设计模式,通过将复杂对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。本文详细介绍了建造者模式的原理、背景、应用场景及实际Demo,帮助读者更好地理解和应用这一模式。
|
设计模式 Java 数据库连接
Java中23种面试常考的设计模式之模板模式(Template)---行为型模式
Java中23种面试常考的设计模式之模板模式(Template)---行为型模式
92 1