• Java设计模式之模板方法模式


    模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个算法骨架,将一些步骤的具体实现延迟到子类中。模板方法模式通过将共同的代码逻辑放在父类中,而将具体的实现细节留给子类来实现,从而实现代码的复用和扩展。

    在模板方法模式中,有两类角色:

    1. 抽象类(Abstract Class):抽象类定义了算法的骨架,其中包含了一系列的抽象方法和具体方法。抽象类中的具体方法可以是抽象方法的默认实现,也可以是一些通用的步骤实现。抽象类中的模板方法用于定义算法的骨架,它调用抽象方法和具体方法来完成算法的执行。
    2. 具体类(Concrete Class):具体类是抽象类的子类,它实现了抽象类中定义的抽象方法,完成具体的实现细节。

    下面是一个示例,展示了模板方法模式的应用:

    // 抽象类
    abstract class AbstractClass {
        // 模板方法
        public void templateMethod() {
            step1();
            step2();
            step3();
        }
    
        // 抽象方法,由子类实现
        protected abstract void step1();
    
        // 具体方法,提供默认实现
        protected void step2() {
            System.out.println("AbstractClass: Step 2");
        }
    
        // 抽象方法,由子类实现
        protected abstract void step3();
    }
    
    // 具体类
    class ConcreteClass extends AbstractClass {
        @Override
        protected void step1() {
            System.out.println("ConcreteClass: Step 1");
        }
    
        @Override
        protected void step3() {
            System.out.println("ConcreteClass: Step 3");
        }
    }
    
    // 客户端代码
    public class Main {
        public static void main(String[] args) {
            AbstractClass abstractClass = new ConcreteClass();
            abstractClass.templateMethod();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    在上面的示例中,AbstractClass抽象类,定义了一个模板方法 templateMethod(),它定义了算法的骨架,并调用了抽象方法 step1()step3(),以及具体方法 step2()ConcreteClass 是具体类,它继承了 AbstractClass 并实现了抽象方法 step1()step3()。在客户端代码中,创建了一个 ConcreteClass 的实例,并调用了模板方法 templateMethod(),从而完成了算法的执行。

    运行上述代码,将会输出以下结果:

    ConcreteClass: Step 1
    AbstractClass: Step 2
    ConcreteClass: Step 3
    
    • 1
    • 2
    • 3

    通过模板方法模式,我们可以将算法的通用部分放在抽象类中,而将具体的实现细节留给子类来实现。这样可以实现代码的复用和扩展,同时还可以避免子类中的代码重复。

  • 相关阅读:
    换工作?试试远程工作「GitHub 热点速览 v.22.40」
    判断船进去倾倒区次数
    信驰达科技加入智慧车联产业生态联盟ICCE,共创智慧车联未来
    【机器学习】基于卷积神经网络 CNN 的猫狗分类问题
    Python机器学习算法入门教程(四)
    第十三届蓝桥杯国赛真题 PythonB组 复盘以及获奖感言(国一!!!)
    LuatOS-SOC接口文档(air780E)--crypto - 加解密和hash函数
    【Excel小技巧】如何为Sheet特定区域/单元格设置“密码“/“不可编辑“
    11.14 知识总结(视图层、模层板)
    01.OpenWrt-写在前面
  • 原文地址:https://blog.csdn.net/kkwyting/article/details/133743604