定义:
模板设计模式,定义一组算法的框架,这些算法的步骤大致相同。而将这些算法中不同的步骤延迟到子类中实现。
例子:
我们玩儿游戏,一般需要经历这几个步骤,加载游戏、读取存档、开始游戏、存档、结束游戏,现在将这些步骤固定下来,这样这样不同的游戏就可以根据这个模版进行开发,实现自己的游戏方式了。
首先,定义好我们的方法
[Java]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 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 | public abstract class AbstractGame { public final void play(){ this.loading(); this.read(); this.start(); this.save(); this.end(); } /** * 加载游戏 */ public abstract void loading(); /** * 读档 */ public abstract void read(); /** * 开始游戏 */ public abstract void start(); /** * 游戏存档 */ public abstract void save(); /** * 结束游戏 */ public abstract void end();} |
比如我们常见的超级玛丽
[Java]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class SuperMario extends AbstractGame { @Override public void loading() { System.out.println("嗨,我是超级马里奥"); } @Override public void read() { System.out.println("我的档案是联网保存的"); } @Override public void start() { System.out.println("吃蘑菇,打小怪"); } @Override public void save() { System.out.println("联网保存档案"); } @Override public void end() { System.out.println("我是超级马里奥,拜拜"); }} |
还有贪吃蛇
[Java]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class Snake extends AbstractGame { @Override public void loading() { System.out.println("hello,我是贪吃蛇"); } @Override public void read() { System.out.println("贪吃蛇的档案"); } @Override public void start() { System.out.println("开始吃豆子"); } @Override public void save() { System.out.println("保存长度"); } @Override public void end() { System.out.println("结束"); }} |
运行一下
[Java]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 | public class PlayGame { public static void main(String[] args) { System.out.println("------------开始玩儿超级马里奥------------"); AbstractGame game1 = new SuperMario(); game1.play(); System.out.println("------------开始玩儿贪吃蛇---------------"); AbstractGame game2 = new Snake(); game2.play(); }} |
运行结果
[Java]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 | ------------开始玩儿超级马里奥------------嗨,我是超级马里奥我的档案是联网保存的吃蘑菇,打小怪联网保存档案我是超级马里奥,拜拜------------开始玩儿贪吃蛇---------------hello,我是贪吃蛇贪吃蛇的档案开始吃豆子保存长度结束 |
总结:
模板设计模式,就是将公用的步骤抽取出来,具体的实现交由不同的子类实现。