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

总结:

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

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

相关推荐
许苑向上1 小时前
MVCC底层原理实现
java·数据库·mvcc原理
组合缺一1 小时前
Solon Cloud Gateway 开发:熟悉 ExContext 及相关接口
java·后端·gateway·solon
一只淡水鱼662 小时前
【spring】集成JWT实现登录验证
java·spring·jwt
忘忧人生2 小时前
docker 部署 java 项目详解
java·docker·容器
null or notnull3 小时前
idea对jar包内容进行反编译
java·ide·intellij-idea·jar
angen20184 小时前
二十三种设计模式-享元模式
设计模式·享元模式
言午coding4 小时前
【性能优化专题系列】利用CompletableFuture优化多接口调用场景下的性能
java·性能优化
缘友一世5 小时前
JAVA设计模式:依赖倒转原则(DIP)在Spring框架中的实践体现
java·spring·依赖倒置原则
何中应5 小时前
从管道符到Java编程
java·spring boot·后端
SummerGao.5 小时前
springboot 调用 c++生成的so库文件
java·c++·.so