设计模式-模板模式

一、模板模式介绍

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

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

抽象模板类:

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

四、模板模式总结:

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

相关推荐
BLSxiaopanlaile11 小时前
有关创建型的几个设计模式总结
设计模式
蜡笔小马11 小时前
14.C++设计模式-状态模式
c++·设计模式·状态模式
加油201912 小时前
嵌入式软件技术栈和学习路线详解
linux·arm开发·数据结构·mqtt·设计模式·嵌入式
likerhood12 小时前
设计模式 · 代理模式(Proxy Pattern)java
java·设计模式·代理模式
刀法如飞1 天前
Palantir Ontology 存储结构与读写机制原理深入剖析
大数据·设计模式·系统架构
KobeSacre1 天前
设计模式——七大设计原则
设计模式
倒流时光三十年1 天前
设计模式 之 责任链模式
设计模式·责任链模式
阿文的代码库1 天前
桥接设计模式的案例实现
设计模式
乐观的山里娃1 天前
【设计模式 14】责任链:谁来拍板
设计模式