大话设计模式——1.模板方法模式(Template Method Pattern)

定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
在这里插入图片描述

例子:比较重大的考试往往有A、B两套试卷,其中一套出现问题可以立马更换另一套。
定义基类:测试试卷

public abstract class TestPaper {
   

    public void testA(){
   
        System.out.println("测试题A的答案:"+answerA());
    }

    public void testB(){
   
        System.out.println("测试题B的答案:"+answerB());
    }

    /**
     * 测试A答案
     * @return
     */
    public abstract String answerA();

    public abstract String answerB();
}

派生类:A试卷

public class TestPaperA extends TestPaper {
   


    @Override
    public String answerA() {
   
        return "A";
    }

    @Override
    public String answerB() {
   
        return "A";
    }
}

派生类:B试卷

public class TestPaperA extends TestPaper {
   


    @Override
    public String answerA() {
   
        return "A";
    }

    @Override
    public String answerB() {
   
        return "A";
    }
}

测试

public class Main {
   

    public static void main(String[] args) {
   
        System.out.println("A卷答案:");
        TestPaper testPaperA = new TestPaperA();
        testPaperA.testA();
        testPaperA.testB();

        System.out.println("===================");
        System.out.println("B卷答案:");
        TestPaper testPaperB = new TestPaperB();
        testPaperB.testA();
        testPaperB.testB();
    }
}

在这里插入图片描述
总结:
优点:提供了一个比较好的代码复用平台,可以不改变算法的结构去重新定义算法的某些特定步骤
缺点:增加了系统的复杂性和抽象性以及理解难度(设计模式中的通用缺点)

相关推荐

  1. 设计模式-模板方法模式

    2024-02-13 07:26:02       66 阅读
  2. 设计模式模板方法模式

    2024-02-13 07:26:02       54 阅读
  3. 设计模式——模板方法模式

    2024-02-13 07:26:02       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-13 07:26:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-13 07:26:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-13 07:26:02       82 阅读
  4. Python语言-面向对象

    2024-02-13 07:26:02       91 阅读

热门阅读

  1. 记录 | C++ #ifdef #endif 条件编译指令

    2024-02-13 07:26:02       56 阅读
  2. c++ STL系列——(三)list

    2024-02-13 07:26:02       53 阅读
  3. ElasticSearch级查询Query DSL下

    2024-02-13 07:26:02       44 阅读
  4. arduino ide esp32 网页按钮异步请求

    2024-02-13 07:26:02       56 阅读
  5. 桥接模式:连接抽象与实现的设计艺术

    2024-02-13 07:26:02       55 阅读
  6. Kotlin:单例模式(项目使用实例)

    2024-02-13 07:26:02       55 阅读
  7. 使用 C++23 从零实现 RISC-V 模拟器(1):最简CPU

    2024-02-13 07:26:02       50 阅读
  8. 面试复盘——9

    2024-02-13 07:26:02       60 阅读
  9. 嵌入式大厂面试题(1)—— CVTE

    2024-02-13 07:26:02       56 阅读
  10. ES实战-分析数据1

    2024-02-13 07:26:02       47 阅读
  11. 面试计算机网络框架八股文十问十答第三期

    2024-02-13 07:26:02       62 阅读
  12. 时钟信号和复位信号的来源

    2024-02-13 07:26:02       44 阅读