模板方法模式(Template pattern)属于行为模式,用于定义构建某个对象的步骤与顺序,或者定义一个算法的骨架。可以在一个抽象类公开定义执行它的包含执行顺序方法的方法,它的子类可以按需要重写方法实现。
demo:
游戏的模板抽象类:
public abstract class Game {
// 子类需要实现的方法
public abstract void startGame();
public abstract void endGame();
// 统一实现方法
public void initialize() {
System.out.println("initialize game");
}
// 顺序调用,用final修饰防止子类误操作
public final void play() {
initialize();
startGame();
endGame();
}
}
具体的游戏类的实现:
public class LolGame extends Game {
@Override
public void startGame() {
System.out.println("start LOL");
}
@Override
public void endGame() {
System.out.println("end LOL");
}
}
public class AngryBirdGame extends Game {
@Override
public void startGame() {
System.out.println("start AngryBird");
}
@Override
public void endGame() {
System.out.println("end AngryBird");
}
}
调用:
Game game = new LolGame();
game.play();
game = new AngryBirdGame();
game.play();
输出结果:
initialize game
start LOL
end LOL
initialize game
start AngryBird
end AngryBird
优点: 封装不变部分,扩展可变部分。 提取公共代码,便于维护。 行为由父类控制,子类实现。