设计模式-模板模式

一、模板模式介绍

模板方法模式通过在抽象类中定义算法的骨架(固定的流程),将某些实现细节延迟到子类去实现。模板方法模式是行为型设计模式的一种。

二、模板方法模式的核心角色

抽象模板类:

模板方法:定义算法的骨架,按照设定步骤调用方法,为了防止子类篡改,这个方法通常由final 修饰。

抽象方法:模板中的可变步骤,抽象模板类只声明,由子类去实现。

具体方法:模板中固定不变的步骤,子类继承使用。

钩子方法:抽象父类中定义,可以被子类重写,以影响模板方法的行为。

具体子类:

继承抽象父类,实现父类中的抽象方法。

三、模板模式小例子

抽象模板类:

java 复制代码
public abstract class Game {
    abstract void initialize();

    abstract void startPlay();

    abstract void endPlay();

    public final void play() {
        // 初始化游戏
        initialize();
        // 开始游戏
        startPlay();
        // 结束游戏
        endPlay();
    }
}

具体子类:

java 复制代码
public class Chess extends Game {
    @Override
    void initialize() {
        System.out.println("象棋游戏初始化");
    }

    @Override
    void startPlay() {
        System.out.println("象棋游戏开始");
    }

    @Override
    void endPlay() {
        System.out.println("象棋游戏结束");
    }
}
java 复制代码
public class Soccer extends Game {
    @Override
    void initialize() {
        System.out.println("足球游戏初始化");
    }

    @Override
    void startPlay() {
        System.out.println("足球游戏开始");
    }

    @Override
    void endPlay() {
        System.out.println("足球游戏结束");
    }
}

测试:

java 复制代码
public class Test {
    public static void main(String[] args) {
        Game game = new Chess();
        game.play();
        System.out.println("=====================");
        Game game1 = new Soccer();
        game1.play();
    }
}

四、模板模式总结:

使用模板模式可以将不变的逻辑提取到父类,减少重复代码的编写 。算法的整体结构由抽象父类控制,能保证核心流程的可控性。该模式也符合开闭原则,新增一个业务变体只需要新增一个子类继承抽象父类即可。

相关推荐
Zane199411 小时前
同一段单例代码,为什么在高并发下偶尔会创建出两个实例?聊聊哪种单例实现才是真的安全
设计模式
Carl_奕然12 小时前
【智能体】Loop 的四种设计模式之:Agent Loop(2026 最新版)
人工智能·设计模式·语言模型
小酒星小杜13 小时前
画 AI 漫画,别只会写“日漫风”:10 种画风、适用故事和可复制提示词
人工智能·设计模式·程序员
sarasuki1 天前
为什么 Agent 工具需要一个「协议」而不是「框架」:MCP 成为标准的底层逻辑
设计模式·agent·mcp
vivo互联网技术1 天前
知识不是文件,也不是向量 | KDC 系列 02
人工智能·设计模式·架构
Zane19947 天前
一个 new 就能创建对象,为什么还要拆出单例、工厂、建造者、原型四种模式?
设计模式
怕浪猫8 天前
一行命令复刻爆款视频,我把 Hypit 从安装跑到了出片
人工智能·设计模式·程序员
Zane19948 天前
函数式编程里的函数,其实不是你天天写的那个函数——三大编程范式的边界在哪
设计模式
Zane19949 天前
策略模式现在该不该上?一次讲清楚过度设计和设计不足怎么找平衡
设计模式
她说..9 天前
常见设计模式-模板方法模式
java·spring·设计模式·springboot