模板方法模式实现

模板方法模式实现步骤

  1. 定义一个抽象类,里面有给子类实现的具体逻辑方法,也有一些公共的业务逻辑方法。
  2. 定义具体实现类,来自定化自己的实现逻辑。

案例

我们以旅游产品下单为例,比如我们订单在下单的时候都有选择资源和添加出游人的功能,添加出游人的功能是一样的,可以放在抽象类中实现,而添加资源各个系统业务逻辑不一样,比如机票资源和酒店资源。

我们先建 net.haicoder.template 包,在该包下面建 AbstrateCreateOrder.javaFlightOrderCreate.javaHotelOrderCreate.javaTestMain.java 类。文件创建完毕,具体目录结构如下:

02 模板方法代码结构图.png

AbstrateCreateOrder.java 代码如下:

package net.haicoder.template; public abstract class AbstrateCreateOrder { //添加资源 public abstract void addResource(); //添加出有人 public void addTourist() { System.out.println("添加出有人信息"); } }

FlightOrderCreate.java 代码如下:

package net.haicoder.template; public class FlightOrderCreate extends AbstrateCreateOrder { public void addResource() { System.out.println("添加机票资源"); } }

HotelOrderCreate.java 代码如下:

package net.haicoder.template; public class HotelOrderCreate extends AbstrateCreateOrder { public void addResource() { System.out.println("添加酒店资源"); } }

TestMain.java 代码如下:

package net.haicoder.template; public class TestMain { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)"); AbstrateCreateOrder flightOrderCreate = new FlightOrderCreate(); flightOrderCreate.addResource(); flightOrderCreate.addTourist(); System.out.println("=========华丽分割线==========="); AbstrateCreateOrder hotelOrderCreate = new HotelOrderCreate(); hotelOrderCreate.addTourist(); hotelOrderCreate.addResource(); } }

代码运行结果如下:

03 模板方法运行结果图.png

模板方法模式总结

在一定程度上,设计模式模板方法可以规范项目中的代码编写规范。一些流程中定义子类 “继承” 父类,按照父类中定义的框架来实现具体变化逻辑,不仅共用了一些代码也将该操作与原先的子类隔离开而且不会影响以前逻辑。