定义:实现一个算法时,整体步骤很固定、通用,这些步骤已经在父类中写好了
也就是我们干某些东西的时候,都会有固定的步骤,如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的加载过程中,也是用到了简单工程模式,策略模式,责任链模式等等。策略模式在上一期有详细的说明。
下一期,不见不散!!!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)