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

总结:

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

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

相关推荐
Kevinyu_4 分钟前
责任链模式
java·hadoop·责任链模式
明洞日记8 分钟前
【设计模式手册012】责任链模式 - 请求处理的流水线艺术
java·设计模式·责任链模式
ada0_ada18 分钟前
行为型模式:①责任链模式(Chain of Responsibility Pattern)
设计模式
q***071412 分钟前
Java实战:Spring Boot application.yml配置文件详解
java·网络·spring boot
雨中飘荡的记忆23 分钟前
Spring Alibaba AI 实战指南
java·ai编程
冰封剑心25 分钟前
MiniCPM-V-2_6 (4-bit 量化)使用
java·前端·数据库
mqiqe26 分钟前
【Spring AI MCP】四、MCP 服务端
java·人工智能·spring
l***749430 分钟前
springboot与springcloud对应版本
java·spring boot·spring cloud
稚辉君.MCA_P8_Java43 分钟前
Gemini永久会员 Java实现的暴力递归版本
java·数据结构·算法
许商1 小时前
【stm32】【printf】
java·前端·stm32