java 模板方法模式 实例
时间: 2023-10-14 13:13:20 浏览: 81
模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现。这个模式使得子类可以不改变算法的结构就可以重新定义算法中的某些步骤。
以下是一个简单的 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() 方法。输出结果显示了运行过程中输出的信息。
阅读全文