Java设计模式-模板模式(template)

简介: Java设计模式-模板模式(template)

文章目录


前言

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。在一些固定的步骤中由子类来实现个性化的步骤或者算法操作。

一、模板方式

在一 个抽象类公开定义了执行它的方法 的模板。它的子类可以按需要重写方法 实现,但调用将以抽象类中定义的方式进行。

二、模板模式示例

定义一个支付流程的抽象模板,此例子可能不太好,能够说明流程即可。

1.定义抽象的支付流程

package behavior.TemplatePattern;

/**

* 定义一个支付的流程

*

*/

public abstract  class PaymentProcess {

   //模板

   public final void pay(){

       //下单

       tradePay();

       //下单通知

       tardeNotify();

       //退费

       refund();

       //查询订单

       queryOrder();

       //对账

       bill();

   }

    //下单

   abstract void tradePay();

   //支付通知

   abstract void tardeNotify();

   //退款

   abstract void refund();

   //查询订单

   abstract void queryOrder();

   //对账

   abstract void bill();

}


2.具体的类

支付宝支付

package behavior.TemplatePattern;

public class AliPay extends PaymentProcess{

   @Override

   void tradePay() {

       System.out.println("支付宝支付下单....");

   }

   @Override

   void tardeNotify() {

       System.out.println("支付宝支付结果通知....");

   }

   @Override

   void refund() {

       System.out.println("支付宝退费....");

   }

   @Override

   void queryOrder() {

       System.out.println("支付宝查询订单....");

   }

   @Override

   void bill() {

       System.out.println("支付宝支付对账...");

   }

}

微信支付

package behavior.TemplatePattern;

public class WechatPay extends PaymentProcess{

   @Override

   void tradePay() {

       System.out.println("微信支付下单...");

   }

   @Override

   void tardeNotify() {

       System.out.println("微信支付支付结果通知...");

   }

   @Override

   void refund() {

       System.out.println("微信支付退费...");

   }

   @Override

   void queryOrder() {

       System.out.println("微信支付查询定单...");

   }

   @Override

   void bill() {

       System.out.println("微信支付对账...");

   }

}

3 测试

package behavior.TemplatePattern;

public class WechatPay extends PaymentProcess{

   @Override

   void tradePay() {

       System.out.println("微信支付下单...");

   }

   @Override

   void tardeNotify() {

       System.out.println("微信支付支付结果通知...");

   }

   @Override

   void refund() {

       System.out.println("微信支付退费...");

   }

   @Override

   void queryOrder() {

       System.out.println("微信支付查询定单...");

   }

   @Override

   void bill() {

       System.out.println("微信支付对账...");

   }

}

支付宝支付下单....

支付宝支付结果通知....

支付宝退费....

支付宝查询订单....

支付宝支付对账...

微信支付下单...

微信支付支付结果通知...

微信支付退费...

微信支付查询定单...

微信支付对账...

总结

本篇简单的介绍的模板方式的使用,模板模式在一些固定的流程中可以考虑使用。


相关文章
|
2天前
|
存储 Java
Dijkstra最短路径(Java)(详细+模板)
Dijkstra最短路径(Java)(详细+模板)
11 4
|
2天前
|
机器学习/深度学习 算法 Java
全排列(分治)(Java语言 +全排列模板)
全排列(分治)(Java语言 +全排列模板)
8 2
|
2天前
|
设计模式 API
【设计模式】适配器和桥接器模式有什么区别
【设计模式】适配器和桥接器模式有什么区别
8 1
|
2天前
|
设计模式
【设计模式】张一鸣笔记:责任链接模式怎么用?
【设计模式】张一鸣笔记:责任链接模式怎么用?
11 1
|
2天前
|
设计模式 uml
【设计模式】建造者模式就是游戏模式吗?
【设计模式】建造者模式就是游戏模式吗?
11 0
|
2天前
|
设计模式 Java uml
【设计模式】什么是工厂方法模式?
【设计模式】什么是工厂方法模式?
7 1
|
2天前
|
设计模式 uml
【设计模式】一文搞定简单工厂模式!
【设计模式】一文搞定简单工厂模式!
8 2
|
2天前
|
设计模式 JavaScript 前端开发
js设计模式-观察者模式与发布/订阅模式
观察者模式和发布/订阅模式是JavaScript中的两种设计模式,用于处理对象间的通信和事件处理。观察者模式中,一个主题对象状态改变会通知所有观察者。实现包括定义主题和观察者对象,以及在主题中添加、删除和通知观察者的功能。发布/订阅模式则引入事件管理器,允许发布者发布事件,订阅者通过订阅接收通知。
|
2天前
|
设计模式 Java
【JAVA基础篇教学】第十四篇:Java中设计模式
【JAVA基础篇教学】第十四篇:Java中设计模式
|
2天前
|
设计模式 算法 Java
设计模式在Java开发中的应用
设计模式在Java开发中的应用
18 0