设计模式:09-模板方法模式

设计模式:09-模板方法模式,第1张

设计模式:09-模板方法模式

一。适用场景:类给外部提供的接口中的步骤是固定的,每一个步骤对应类中的一个方法。可以将这些方法定义为抽象方法,由子类实现这些抽象方法。
二。比如,体育比赛,其中的基本步骤都是固定的:开始比赛、比赛进行、结束比赛。可以定义一个抽象类SportsGame,其提供一个对外的接口haveASportsGame(),并定义3个抽象方法:startGame(),inGame(),stopGame()

package cn.edu.tju.app;

public abstract  class SportsGame {
    abstract void startGame();
    abstract  void inGame();
    abstract void stopGame();

    public void haveAGame(){
        startGame();
        inGame();
        stopGame();
    }
}

然后定义SportsGame的自类,分别实现上述3个抽象方法

package cn.edu.tju.app;

public class FootballGame extends SportsGame {
    @Override
    void startGame() {
        System.out.println("裁判吹哨,中圈开球");
    }

    @Override
    void inGame() {
        System.out.println("抢球&打门");

    }

    @Override
    void stopGame() {
        System.out.println("裁判吹哨,停止比赛");
    }
}

package cn.edu.tju.app;

public class BasketballGame extends SportsGame {
    @Override
    void startGame() {
        System.out.println("裁判吹哨,中圈争球");
    }

    @Override
    void inGame() {
        System.out.println("带球&投篮");

    }

    @Override
    void stopGame() {
        System.out.println("裁判吹哨,比赛结束");
    }
}

最后,在主类中分别定义FootballGame和BasketballGame类对象,调用在父类SportsGame中定义的接口方法haveAGame()

package cn.edu.tju.app;

public class TemplateMethodTest {
    public static void main(String[] args) {
        SportsGame footballGame=new FootballGame();
        footballGame.haveAGame();
        System.out.println("___________________________");
        SportsGame basketballGame=new BasketballGame();
        basketballGame.haveAGame();
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5683886.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存