大话设计模式——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();
    }
}

总结:

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

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

相关推荐
信码由缰4 分钟前
Java的优势有哪些
java
WaWaJie_Ngen6 分钟前
【设计模式】工厂模式(Factory)
c++·设计模式·简单工厂模式·工厂方法模式·抽象工厂模式
trow11 分钟前
ConcurrentHashMap线程安全实现详解
java·后端
trow11 分钟前
HashMap核心原理与源码剖析
java·后端
YuanlongWang16 分钟前
C# 设计模式——工厂模式
开发语言·设计模式·c#
可观测性用观测云41 分钟前
云原生架构下微服务接入 SkyWalking 最佳实践
java
消失的旧时光-19431 小时前
MQTT主题架构的艺术:从字符串拼接走向设计模式
设计模式
_殊途2 小时前
项目开发手册-开发流程
java
想要AC的sjh2 小时前
华为Java专业级科目一通过心得
java·开发语言·华为
青鱼入云2 小时前
Java 11对集合类做了哪些增强?
java