设计模式-模板模式

一、模板模式介绍

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

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

抽象模板类:

模板方法:定义算法的骨架,按照设定步骤调用方法,为了防止子类篡改,这个方法通常由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();
    }
}

四、模板模式总结:

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

相关推荐
磊 子14 小时前
C++设计模式
javascript·c++·设计模式
许彰午17 小时前
34_Java设计模式之单例模式
java·单例模式·设计模式
石一峰6991 天前
C 语言函数设计模式实战经验
c语言·开发语言·设计模式
qq_297574671 天前
设计模式系列文章(基础篇第22篇):访问者模式——分离数据结构与操作,实现灵活扩展
数据结构·设计模式·访问者模式
刀法如飞2 天前
领域驱动 vs 本体驱动:DDD 代码建模与 Ontology 语义建模的对比分析
设计模式·架构设计·领域驱动
我爱cope2 天前
【Agent智能体26 | 多智能体-多智能体工作流】
人工智能·设计模式·语言模型·职场和发展
咖啡八杯3 天前
【无标题】
java·后端·设计模式
折哥的程序人生 · 物流技术专研3 天前
Java 23 种设计模式:从踩坑到精通 | 适配器模式 —— 让不兼容的接口也能一起工作
java·设计模式·面试·适配器模式·单一职责原则
布朗克1683 天前
33 设计模式精讲
java·单例模式·设计模式