模板模式 Template Pattern

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 游戏结束

以上的例子思路是属于比较清晰的那种,但现实中我们项目业务逻辑绝对不是如此简单的。但是抛开这些名词的条条框我们应该看到一个本质:搞这么多,绕这么一大圈,说这么专业的名词,其实就是为了减少重复代码。重复代码少的好处就是易于维护和扩展。提供这么一个模式是为了大家易于记住 这种套路,快速写出思路清晰的好代码而已。模板方法就是把重复的东西放到抽象类,变化的细节等子类自己去实现。

猜你喜欢

转载自blog.csdn.net/mottohlm/article/details/81152875