其目的在于抽象出一个行为的步骤模板,具体实现则有子类实现
比如不论开什么车的步骤都是点火,挂挡,松手刹
public abstract class Game {
abstract void initialize();
abstract void startPlay();
abstract void endPlay();
//模板
public final void play(){
//初始化游戏
initialize();
//开始游戏
startPlay();
//结束游戏
endPlay();
}
}
public class Cricket extends Game {
@Override
void endPlay() {
System.out.println("Cricket Game Finished!");
}
@Override
void initialize() {
System.out.println("Cricket Game Initialized! Start playing.");
}
@Override
void startPlay() {
System.out.println("Cricket Game Started. Enjoy the game!");
}
}
public class Football extends Game {
@Override
void endPlay() {
System.out.println("Football Game Finished!");
}
@Override
void initialize() {
System.out.println("Football Game Initialized! Start playing.");
}
@Override
void startPlay() {
System.out.println("Football Game Started. Enjoy the game!");
}
}
public class TemplatePatternDemo {
public static void main(String[] args) {
Game game = new Cricket();
game.play();
System.out.println();
game = new Football();
game.play();
}
}
如上所示,一些方法步骤通用,底层实现不一样的时候用模板模式
使用场景:
1、有多个子类共有的方法,且逻辑相同。
2、重要的、复杂的方法,可以考虑作为模板方
优点:
1、封装不变部分,扩展可变部分。‘’
2、提取公共代码,便于维护。
3、行为由父类控制,子类实现。
缺点:
每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。

上述代码展示了模板模式在游戏开发中的应用。抽象基类`Game`定义了游戏的一般流程,包括初始化、开始和结束游戏的方法,而具体的游戏类型如`Cricket`和`Football`通过继承并实现这些方法,提供了各自特有的行为。模板模式使得公共步骤得以统一,同时允许子类自定义特定逻辑,提高了代码复用性和可维护性。这种模式在需要保持整体流程一致但具体实现多样的场景下非常适用。
823

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



