千家信息网

Java中模板模式怎么用

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,小编给大家分享一下Java中模板模式怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!优点封装不变部分,扩展可变部分。提取公共代码,便于维护。行为由父类控制,子类实现。缺点每一个不
千家信息网最后更新 2024年11月11日Java中模板模式怎么用

小编给大家分享一下Java中模板模式怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

    优点

    封装不变部分,扩展可变部分。

    提取公共代码,便于维护。

    行为由父类控制,子类实现。

    缺点

    每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。

    使用场景

    1.有多个子类共有的方法,且逻辑相同。

    2.重要的、复杂的方法,可以考虑作为模板方法。

    一、实现方式

    假设一个场景,我们在玩游戏的时候,都需要初始化加载游戏,然后开始游戏,最后结束游戏,这像是一套模板一样的操作,但是具体的实现方法却不同,例如:LOL 游戏与 CF 游戏的加载资源肯定不同,游戏的内容也不同。

    1、游戏抽象类

    package com.asurplus.common.template;/** * 游戏抽象类 */public abstract class Game {    // 初始化游戏    abstract void init();    // 开始游戏    abstract void start();    // 结束游戏    abstract void end();    // 模板    public final void play() {        // 初始化游戏        init();        // 开始游戏        start();        // 结束游戏        end();    }}

    2、LOL游戏类

    package com.asurplus.common.template;import lombok.extern.slf4j.Slf4j;/** * LOL游戏 */@Slf4jpublic class LolGame extends Game {    @Override    void init() {        log.info("初始化 LOL 游戏");    }    @Override    void start() {        log.info("LOL 游戏开始");    }    @Override    void end() {        log.info("LOL 游戏结束");    }}

    3、CF游戏类

    package com.asurplus.common.template;import lombok.extern.slf4j.Slf4j;/** * CF游戏 */@Slf4jpublic class CfGame extends Game {    @Override    void init() {        log.info("初始化 CF 游戏");    }    @Override    void start() {        log.info("CF 游戏开始");    }    @Override    void end() {        log.info("CF 游戏结束");    }}

    二、测试

    package com.asurplus.common.template;/** * 模板模式 */public class TestMain {    public static void main(String[] args) {        // LOL 游戏        Game lolGame = new LolGame();        lolGame.play();        System.out.println();        // CF 游戏        Game cfGame = new CfGame();        cfGame.play();    }}

    输出结果

    可以看出,一套模板,可以有多个实现方式,从而实现了我们的工厂模式。

    看完了这篇文章,相信你对"Java中模板模式怎么用"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

    0