定义
定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
案例
/**
* 游戏模板类(抽象父类)
*/
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()有子类来自定义实现。

被折叠的 条评论
为什么被折叠?



