设计模式 23:模板方法模式
定义与目的
- 定义:模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
- 目的:该模式的主要目的是封装算法的框架,允许子类提供具体的实现细节,而不改变算法的整体结构。
实现示例
假设我们有一个简单的游戏,玩家需要经历一系列的挑战才能通关。我们可以使用模板方法模式来实现这个需求。
// 抽象类 - 游戏
abstract class Game {
// 模板方法
final void play() {
makePreparations();
startGame();
playGame();
endGame();
}
protected void makePreparations() {
System.out.println("Making preparations...");
}
protected abstract void startGame();
protected abstract void playGame();
protected void endGame() {
System.out.println("Game over!");
}
}
// 具体类 - 冒险游戏
class AdventureGame extends Game {
@Override
protected void startGame() {
System.out.println("Starting adventure game...");
}
@Override
protected void playGame() {
System.out.println("Exploring dungeons, fighting monsters...");
}
}
// 具体类 - 战略游戏
class StrategyGame extends Game {
@Override
protected void startGame() {
System.out.println("Starting strategy game...");
}
@Override
protected void playGame() {
System.out.println("Building structures, training troops...");
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Game adventureGame = new AdventureGame();
Game strategyGame = new StrategyGame();
System.out.println("Playing adventure game:");
adventureGame.play();
System.out.println("\nPlaying strategy game:");
strategyGame.play();
}
}
使用场景
- 当你需要定义算法的骨架,而将一些步骤留给子类去实现时。
- 当你需要确保一系列方法的调用顺序不变,但允许个别方法的具体实现不同。
- 当你需要在不改变算法结构的情况下重定义算法的某些步骤时。
模板方法模式通过定义算法的骨架,并将一些步骤留给子类去实现,使得子类可以在不改变算法结构的情况下重定义算法的某些步骤。这对于需要确保一系列方法的调用顺序不变,但允许个别方法的具体实现不同的场景非常有用。
小结
模板方法模式是一种常用的行为型模式,它可以帮助你定义算法的骨架,而将一些步骤留给子类去实现。这对于需要确保一系列方法的调用顺序不变,但允许个别方法的具体实现不同的场景非常有用。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 编程-设计模式 23:模板方法模式
发表评论 取消回复