模板方法设计模式 实例
时间: 2023-11-15 20:01:34 浏览: 43
模板方法设计模式是一种行为型设计模式,它定义了一个操作中的算法骨架,将一些步骤延迟到子类中实现。这种模式使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。模板方法设计模式的核心思想是:将共性部分抽象出来,将个性部分留给子类去实现。这样可以避免代码重复,提高代码的复用性和可维护性。模板方法设计模式通常包含一个抽象类和若干个具体子类,其中抽象类中定义了一个模板方法,该方法中包含了算法的骨架,而具体子类则实现了该模板方法中的具体步骤。
举个例子,假设我们要制作一款游戏,游戏中有多个角色,每个角色都有自己的攻击方式和防御方式。我们可以使用模板方法设计模式来实现这个游戏。首先定义一个抽象类,其中包含一个模板方法,该方法中包含了攻击和防御的骨架,而具体的攻击和防御方式则由具体子类去实现。这样,我们就可以在不改变游戏结构的情况下,灵活地添加新的角色和攻击方式。
相关问题
模板方法设计模式案例
模板方法设计模式是一种行为设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现。这种模式使得子类可以在不改变算法结构的情况下重新定义算法的某些步骤。
一个经典的模板方法设计模式案例是咖啡和茶的制作过程。在这个案例中,制作咖啡和茶的过程有很多相似的步骤,比如煮水、冲泡、加入调料等等。但是,咖啡和茶的具体制作过程又有所不同,比如咖啡需要用咖啡豆冲泡,而茶则需要用茶叶冲泡。
为了解决这个问题,我们可以使用模板方法设计模式。我们可以定义一个抽象类,其中包含制作咖啡和茶的算法骨架,但是将一些步骤延迟到子类中实现。具体来说,我们可以定义一个名为“prepareRecipe”的方法,其中包含了制作咖啡和茶的算法骨架,但是将“冲泡”这个步骤延迟到子类中实现。这样,我们就可以在不改变算法结构的情况下,重新定义制作咖啡和茶的具体步骤。
java 模板方法模式 实例
模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现。这个模式使得子类可以不改变算法的结构就可以重新定义算法中的某些步骤。
以下是一个简单的 Java 实例,展示了模板方法模式的应用:
1. 创建一个抽象类 Game,它包含一个模板方法 play(),以及两个抽象方法 initialize() 和 endPlay()。
```
abstract class Game {
abstract void initialize();
abstract void startPlay();
abstract void endPlay();
//模板
public final void play(){
// 初始化游戏
initialize();
// 开始游戏
startPlay();
// 结束游戏
endPlay();
}
}
```
2. 创建两个继承自 Game 的实体类 Cricket 和 Football,它们分别实现了抽象方法 initialize() 和 endPlay()。
```
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!");
}
}
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!");
}
}
```
3. 创建一个 Main 类,用于演示模板方法模式的实现。
```
public class Main {
public static void main(String[] args) {
Game game = new Cricket();
game.play();
System.out.println();
game = new Football();
game.play();
}
}
```
输出结果:
```
Cricket Game Initialized! Start playing.
Cricket Game Started. Enjoy the game!
Cricket Game Finished!
Football Game Initialized! Start playing.
Football Game Started. Enjoy the game!
Football Game Finished!
```
这个例子中,我们创建了一个抽象类 Game,其中包含一个模板方法 play() 和两个抽象方法 initialize() 和 endPlay()。然后我们创建了两个具体实现类 Cricket 和 Football,它们分别实现了 initialize() 和 endPlay() 方法。最后,我们创建了一个 Main 类,用于演示模板方法模式的实现。在 Main 类中,我们分别创建了一个 Cricket 对象和一个 Football 对象,并分别调用了它们的 play() 方法。输出结果显示了运行过程中输出的信息。