设计模式---模板模式

定义

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

 

案例

/**
 * 游戏模板类(抽象父类)
 */
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()有子类来自定义实现。

你可能感兴趣的:(设计模式)