版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mottohlm/article/details/81152875
模板模式是使用一个抽象类,里面定义了一系列模板方法,也就是一个算法骨架,再定义一个总的调用统筹方法。统筹方法就是定义模板方法的执行顺序,一般设定该方法为final ,是不让子类破坏的。
下面以一个游戏模板为例子,它定义了所有游戏的框架:初始化、开始游戏、结束游戏。然后提供一个玩游戏的调用方法。
public abstract class Game {
abstract void init();
abstract void start();
abstract void end();
public final void play(){
init();
start();
end();
}
}
下面各个游戏实现自己的内部逻辑
public class Dota2 extends Game {
@Override
void init() {
System.out.println("Dota2 初始化");
}
@Override
void start() {
System.out.println("Dota2 游戏开始");
}
@Override
void end() {
System.out.println("Dota2 游戏结束");
}
}
public class CSGo extends Game {
@Override
void init() {
System.out.println("CSGO 初始化");
}
@Override
void start() {
System.out.println("CSGO 游戏开始");
}
@Override
void end() {
System.out.println("CSGO 游戏结束");
}
}
编写一个测试例子
public class damo {
public static void main(String[] args){
Game dota2 = new Dota2();
Game csgo = new CSGo();
dota2.play();
csgo.play();
}
}
运行结果
Dota2 初始化
Dota2 游戏开始
Dota2 游戏结束
CSGO 初始化
CSGO 游戏开始
CSGO 游戏结束
以上的例子思路是属于比较清晰的那种,但现实中我们项目业务逻辑绝对不是如此简单的。但是抛开这些名词的条条框我们应该看到一个本质:搞这么多,绕这么一大圈,说这么专业的名词,其实就是为了减少重复代码。重复代码少的好处就是易于维护和扩展。提供这么一个模式是为了大家易于记住 这种套路,快速写出思路清晰的好代码而已。模板方法就是把重复的东西放到抽象类,变化的细节等子类自己去实现。