定义 模板设计模式,定义一组算法的框架,这些算法的步骤大致相同。而将这些算法中不同的步骤延迟到子类中实现。
例子
我们玩儿游戏,一般需要经历这几个步骤,加载游戏、读取存档、开始游戏、存档、结束游戏,现在将这些步骤固定下来,这样这样不同的游戏就可以根据这个模版进行开发,实现自己的游戏方式了。
首先,定义好我们的方法
[Java] 纯文本查看 复制代码 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] 纯文本查看 复制代码 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] 纯文本查看 复制代码 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] 纯文本查看 复制代码 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] 纯文本查看 复制代码 ------------开始玩儿超级马里奥------------
嗨,我是超级马里奥
我的档案是联网保存的
吃蘑菇,打小怪
联网保存档案
我是超级马里奥,拜拜
------------开始玩儿贪吃蛇---------------
hello,我是贪吃蛇
贪吃蛇的档案
开始吃豆子
保存长度
结束
总结
模板设计模式,就是将公用的步骤抽取出来,具体的实现交由不同的子类实现。
|