定义:实现一个算法时,整体步骤很固定、通用,这些步骤已经在父类中写好了
也就是我们干某些东西的时候,都会有固定的步骤,如springboot集成mybatis等和rentranlock中,都是使用了模板的设计模式,调用的时候都需要按照步骤来进行,但每个步骤里面可能大家都不相同,所以就可以用这种模式;
本例子将举例打游戏,在王者和吃鸡中,王者有开始,战斗阶段,和结束阶段
吃鸡中,挂一个队友,挂两个队友,四个全挂,战斗结束;也是分了这三个前后顺序;那么就可以进行模版设计模式来进行
前期准备:
提供一个抽象类和一个全局访问的final方法;至于为什么要final,也就是防止重写;该方法来决定事情的先后顺序进行,并提供三个抽象方法
代码如下所示:
public abstract class doSomething {
abstract void one();
abstract void two();
abstract void three();
public final void dothreething(){
one();
two();
three();
}
}
package com.example.csv.Moban;
public class WangZheThing extends doSomething{
@Override
void one() {
System.out.println("王者荣耀开始了,敌军还有十秒到达战场");
}
@Override
void two() {
System.out.println("一看操作猛如虎,一看战绩0/5");
}
@Override
void three() {
System.out.println("六分钟投了,战斗结束");
}
}
public class ChiJiThing extends doSomething{
@Override
void one() {
System.out.println("队友挂了一个");
}
@Override
void two() {
System.out.println("队友挂了两个");
}
@Override
void three() {
System.out.println("队友全挂,战斗结束");
}
}
@RestController
@RequestMapping("game")
public class GameController {
@ResponseBody
@RequestMapping("index")
public String game(@Param("flage")String flage){
doSomething dos;
if (flage.equals("1")){
dos=new WangZheThing();
dos.dothreething();
}else {
dos=new ChiJiThing();
dos.dothreething();
}
return "success";
}
}
注意:这里的控制层我进行了逻辑的判断,如果不想用if可以使用策略模式来进行融合;在spring的设计当中,也是集成了多种模式来进行共同的完成,在spring的ioc的加载过程中,也是用到了简单工程模式,策略模式,责任链模式等等。策略模式在上一期有详细的说明。
下一期,不见不散!!!!