我们以旅游产品下单为例,比如我们订单在下单的时候都有选择资源和添加出游人的功能,添加出游人的功能是一样的,可以放在抽象类中实现,而添加资源各个系统业务逻辑不一样,比如机票资源和酒店资源。
我们先建 net.haicoder.template
包,在该包下面建 AbstrateCreateOrder.java
、FlightOrderCreate.java
、HotelOrderCreate.java
和 TestMain.java
类。文件创建完毕,具体目录结构如下:
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(); } }
代码运行结果如下:
模板方法模式总结
在一定程度上,设计模式中模板方法可以规范项目中的代码编写规范。一些流程中定义子类 “继承” 父类,按照父类中定义的框架来实现具体变化逻辑,不仅共用了一些代码也将该操作与原先的子类隔离开而且不会影响以前逻辑。