栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式: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();
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683327.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号