引入
在之前的文章中我们介绍了常见的设计模式,今天我们来使用 Java 语言对模板方法模式进行具体实现举例。
实例
在下面的例子中,我们使用模板方法模式来对子类共有的方法或者方法逻辑进行抽象,就像预先设计一个模板一样,下面采用抽象类来举例,但是采用接口也可以做到类似的效果(JDK8之后接口支持default方法),我们以游戏来作为例子(手动狗头):
模板抽象类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
static abstract class GameTemplate {
abstract void init();
abstract void start();
abstract void end();
public final void play() { init(); load(); start(); end(); }
void load() { System.out.println("正在加载数据"); } }
|
子类实现类
可以看到我们的子类简化了很多公共的部分,更加整洁清晰了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
static class Genshin extends GameTemplate { @Override void init() { System.out.println("原神"); } @Override void start() { System.out.println("启动"); } @Override void end() { System.out.println("提瓦特大陆的星空永远会有你的位置"); } }
static class Tencent extends GameTemplate { @Override void init() { System.out.println("TiMi"); } @Override void start() { System.out.println("开始游戏"); } @Override void end() { System.out.println("你充Q币吗?"); } }
|