专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

大话设计模式之模板方法模式

模板方法模式

  定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

84_1.png

优点:

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

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

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

缺点:

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

使用场景:

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

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

具体实现

抽象算法类

package com.chenpt.designModel.templateModel;

/**
 * @Author: chen
 * @Description:
 * @Date: created in 2018/8/28
 * @Modified By:
 */
public abstract class Game {

    abstract void initGame();
    abstract void startGame();
    abstract void endGame();

    public void play(){
        initGame();//初始化游戏
        startGame();//开始游戏
        endGame();//游戏结束
    }

}

 子类一

package com.chenpt.designModel.templateModel;

/**
 * @Author: chen
 * @Description:
 * @Date: created in 2018/8/28
 * @Modified By:
 */
public class BasketballGame extends Game {
    @Override
    void initGame() {
        System.out.println("篮球运动准备中···");
    }

    @Override
    void startGame() {
        System.out.println("开始比赛···");
    }

    @Override
    void endGame() {
        System.out.println("比赛结束");
    }
}

 子类二

package com.chenpt.designModel.templateModel;

/**
 * @Author: chen
 * @Description:
 * @Date: created in 2018/8/28
 * @Modified By:
 */
public class FootballGame extends Game {
    @Override
    void initGame() {
        System.out.println("足球运动准备中···");
    }

    @Override
    void startGame() {
        System.out.println("开始比赛···");
    }

    @Override
    void endGame() {
        System.out.println("比赛结束");
    }
}

 客户端

package com.chenpt.designModel.templateModel;

/**
 * @Author: chen
 * @Description:
 * @Date: created in 2018/8/28
 * @Modified By:
 */
public class MainTest {

    public static void main(String[] args){
        Game bgame = new BasketballGame();
        bgame.play();
        System.out.println("=============无敌分割线===============");
        Game fgame = new FootballGame();
        fgame.play();
    }

}
//执行结果
篮球运动准备中···
开始比赛···
比赛结束
=============无敌分割线===============
足球运动准备中···
开始比赛···
比赛结束

  

 

 

 

文章永久链接:https://tech.souyunku.com/39876

未经允许不得转载:搜云库技术团队 » 大话设计模式之模板方法模式

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们