设计模式-模板模式

一、模板模式介绍

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

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

抽象模板类:

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

四、模板模式总结:

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

相关推荐
是2的10次方啊5 小时前
设计模式与生活⑯:天冷了,出门这身得一层层配
设计模式
心若自由何处是束缚1 天前
适配器模式:从原理到实战的完整指南
设计模式·适配器模式
是2的10次方啊1 天前
设计模式与生活⑮:看到哪儿了,得有个地方替你记着
设计模式
2601_967979122 天前
设计模式 - 访问者模式
设计模式·访问者模式·应用场景·对象结构·操作分离
是2的10次方啊2 天前
设计模式与生活⑭:一栋楼,共用一份热
设计模式
是2的10次方啊3 天前
设计模式与生活⑬:你坐几号线,谁来运营是另一回事
设计模式
Tt有了t4 天前
设计模式速查
java·python·设计模式
一条Go4 天前
四个进程,一把锁:Alioth 的告警评测为什么不需要消息队列
后端·设计模式·架构
一缕82年的清风4 天前
被中产唾弃的“十元快剪”,藏着最狠的极客工程学
人工智能·设计模式
是2的10次方啊4 天前
设计模式与生活⑫:周报又到手,别从空白开始
设计模式