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

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

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

定义基类:测试试卷

java 复制代码
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试卷

java 复制代码
public class TestPaperA extends TestPaper {


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

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

派生类:B试卷

java 复制代码
public class TestPaperA extends TestPaper {


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

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

测试

java 复制代码
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();
    }
}

总结:

优点:提供了一个比较好的代码复用平台,可以不改变算法的结构去重新定义算法的某些特定步骤

缺点:增加了系统的复杂性和抽象性以及理解难度(设计模式中的通用缺点)

相关推荐
h汉堡1 分钟前
C/C++内存管理
java·c语言·开发语言·c++·学习
枣伊吕波21 分钟前
第六节第二部分:抽象类的应用-模板方法设计模式
android·java·设计模式
xinxiyinhe25 分钟前
内存泄漏与OOM崩溃根治方案:JVM与原生内存池差异化排查手册
java·开发语言·jvm
心向阳光的天域29 分钟前
黑马Java跟学.最新AI+若依框架项目开发(一)
java
what_201833 分钟前
分布式链路跟踪
java·运维·分布式
oliveira-time42 分钟前
ArrayList和LinkedList区别
java·开发语言
潮流coder1 小时前
IntelliJ IDEA给Controller、Service、Mapper不同文件设置不同的文件头注释模板、Velocity模板引擎
java·ide·intellij-idea
码农飞哥1 小时前
互联网大厂Java求职面试实战:Spring Boot与微服务场景深度解析
java·数据库·spring boot·安全·微服务·消息队列·互联网医疗
Akiiiira1 小时前
【日撸 Java 300行】Day 14(栈)
java·开发语言
lalajh1 小时前
论软件设计模式及其应用
设计模式