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

文章目录

  • 前言
  • 一、模板方式
  • 二、模板模式示例
    • 1.定义抽象的支付流程
    • 2.具体的类
    • 3 测试
  • 总结


前言

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


一、模板方式

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

二、模板模式示例

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

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("微信支付对账...");
    }
}

支付宝支付下单....
支付宝支付结果通知....
支付宝退费....
支付宝查询订单....
支付宝支付对账...
微信支付下单...
微信支付支付结果通知...
微信支付退费...
微信支付查询定单...
微信支付对账...

总结

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

你可能感兴趣的:(Java,java,设计模式,模板模式)