java 设计模式之模板方法模式

简介: java 设计模式之模板方法模式

文章目录

定义

模板模式: 一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定实现。它属于行为模式中的一种。

类图

image.png

栗子

国人现在喜欢喝茶或者喝咖啡,两者都各有各的好处。喝咖啡和喝茶都有有着大致相同的步骤,把茶叶或者咖啡粉导入杯子中,然后倒上热水冲开,最后凉一会儿再喝。

代码实现如下:

public abstract class DrinkTemplate{
    void water(){
        System.out.println("倒水");
    }
    /**
     * 放原料
     */
    public abstract void putMaterial();
    void waitCold(){
        System.out.println("等泡好了凉了再喝");
    }
    public void drink(){
        putMaterial();
        water();
        waitCold();
    }
}

DrinkTemplate类中putMaterial方法是子类要实现的。

实现类:

DrinkTea.java

public class DrinkTea extends DrinkTemplate {
    @Override
    public void putMaterial() {
        System.out.println("放茶叶");
    }
}

DrinkCoffee.java

public class DrinkCoffee extends DrinkTemplate {
    @Override
    public void putMaterial() {
        System.out.println("放咖啡");
    }
}

测试:

@Test
    public void testTemplate(){
        DrinkTemplate tea = new DrinkTea();
        tea.drink();
        System.out.println("====================================");
        DrinkTemplate coffee = new DrinkCoffee();
        coffee.drink();
    }

运行结果:

放茶叶
倒水
等泡好了凉了再喝
====================================
放咖啡
倒水
等泡好了凉了再喝
在这里插入代码片

总结

如果一些逻辑需要一系列的步骤完成,而其中个别逻辑在不同的地方又有不同的逻辑实现,其他的逻辑又有相同的地方,就可以使用模板模式。模板模式就是定义了一系列操作然后在抽象父类中已经把这些操作的逻辑按顺序已经定义好实现顺序,子类只需要实现抽象方法即可。模板模式就像人类一样,出生、生活、死亡,人都会有生死,但是怎么生活活下去每个人可能就不一样了,有人含着金钥匙出生,生活可能就过的滋润一些,有些人生来贫穷,生活可能就过的差一些,但最终都会死亡,每个人的一生就像模板一样生下来活下去。


能力有限,水平一般,如有错误,请多指出。


目录
相关文章
|
14天前
|
设计模式 Java 程序员
[Java]23种设计模式
本文介绍了设计模式的概念及其七大原则,强调了设计模式在提高代码重用性、可读性、可扩展性和可靠性方面的作用。文章还简要概述了23种设计模式,并提供了进一步学习的资源链接。
31 0
[Java]23种设计模式
|
30天前
|
设计模式 监控 算法
Java设计模式梳理:行为型模式(策略,观察者等)
本文详细介绍了Java设计模式中的行为型模式,包括策略模式、观察者模式、责任链模式、模板方法模式和状态模式。通过具体示例代码,深入浅出地讲解了每种模式的应用场景与实现方式。例如,策略模式通过定义一系列算法让客户端在运行时选择所需算法;观察者模式则让多个观察者对象同时监听某一个主题对象,实现松耦合的消息传递机制。此外,还探讨了这些模式与实际开发中的联系,帮助读者更好地理解和应用设计模式,提升代码质量。
Java设计模式梳理:行为型模式(策略,观察者等)
|
2月前
|
存储 设计模式 安全
Java设计模式-备忘录模式(23)
Java设计模式-备忘录模式(23)
|
2月前
|
设计模式 存储 算法
Java设计模式-命令模式(16)
Java设计模式-命令模式(16)
|
2月前
|
设计模式 存储 缓存
Java设计模式 - 解释器模式(24)
Java设计模式 - 解释器模式(24)
|
2月前
|
设计模式 安全 Java
Java设计模式-迭代器模式(21)
Java设计模式-迭代器模式(21)
|
2月前
|
设计模式 缓存 监控
Java设计模式-责任链模式(17)
Java设计模式-责任链模式(17)
|
2月前
|
设计模式 运维 算法
Java设计模式-策略模式(15)
Java设计模式-策略模式(15)
|
2月前
|
设计模式 算法 Java
Java设计模式-模板方法模式(14)
Java设计模式-模板方法模式(14)
|
2月前
|
设计模式 存储 安全
Java设计模式-组合模式(13)
Java设计模式-组合模式(13)