设计模式---模板模式

定义

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

 

案例

/**
 * 游戏模板类(抽象父类)
 */
public abstract class Game {

    //子类可自定义
    public abstract void initialize();
    public abstract void startPlay();
    public abstract void endPlay();

    //模板
    public final void play(){

        //初始化游戏
        initialize();

        //开始游戏
        startPlay();

        //结束游戏
        endPlay();
    }
}

 

/**
 * 篮球游戏(子类)
 */
public class BasketballGame extends Game {
    @Override
    public void initialize() {
        System.out.println("Basketball game initialize...");
    }

    @Override
    public void startPlay() {
        System.out.println("Basketball game startPlay...");
    }

    @Override
    public void endPlay() {
        System.out.println("Basketball game endPlay...");
    }
}

 

/**
 * 足球游戏(子类)
 */
public class FootballGame extends Game {
    @Override
    public void initialize() {
        System.out.println("Football game initialize...");
    }

    @Override
    public void startPlay() {
        System.out.println("Football game startPlay...");
    }

    @Override
    public void endPlay() {
        System.out.println("Football game endPlay...");
    }
}

 

public class TemplatePatternDemo {

    public static void main(String[] args) {

        Game basketball = new BasketballGame();
        basketball.play();
        Game football = new FootballGame();
        football.play();

    }

}

游戏模板类(Game)中,play()方法具有一定的逻辑且不可重写,也就是所谓的模板方法。而其他三个基本方法initialize()、startPlay()和endPlay()有子类来自定义实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值