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

   }

}

支付宝支付下单....

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

支付宝退费....

支付宝查询订单....

支付宝支付对账...

微信支付下单...

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

微信支付退费...

微信支付查询定单...

微信支付对账...

总结

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


相关文章
|
24天前
|
搜索推荐 Java 数据库连接
Java|在 IDEA 里自动生成 MyBatis 模板代码
基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
30 6
|
25天前
|
设计模式 Java 程序员
[Java]23种设计模式
本文介绍了设计模式的概念及其七大原则,强调了设计模式在提高代码重用性、可读性、可扩展性和可靠性方面的作用。文章还简要概述了23种设计模式,并提供了进一步学习的资源链接。
38 0
[Java]23种设计模式
|
9天前
|
设计模式 JavaScript Java
Java设计模式:建造者模式详解
建造者模式是一种创建型设计模式,通过将复杂对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。本文详细介绍了建造者模式的原理、背景、应用场景及实际Demo,帮助读者更好地理解和应用这一模式。
|
1月前
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
60 1
|
1月前
|
设计模式 监控 算法
Java设计模式梳理:行为型模式(策略,观察者等)
本文详细介绍了Java设计模式中的行为型模式,包括策略模式、观察者模式、责任链模式、模板方法模式和状态模式。通过具体示例代码,深入浅出地讲解了每种模式的应用场景与实现方式。例如,策略模式通过定义一系列算法让客户端在运行时选择所需算法;观察者模式则让多个观察者对象同时监听某一个主题对象,实现松耦合的消息传递机制。此外,还探讨了这些模式与实际开发中的联系,帮助读者更好地理解和应用设计模式,提升代码质量。
Java设计模式梳理:行为型模式(策略,观察者等)
|
1月前
|
Java
Java PDF模板生成PDF
Java PDF模板生成PDF
35 1
|
1月前
|
设计模式 Java
Java设计模式
Java设计模式
28 0
|
1月前
|
小程序
java--微信小程序发送模板消息
java--微信小程序发送模板消息
102 0
|
1月前
|
设计模式 Java
Java设计模式之外观模式
这篇文章详细解释了Java设计模式之外观模式的原理及其应用场景,并通过具体代码示例展示了如何通过外观模式简化子系统的使用。
29 0
|
1月前
|
设计模式 Java
Java设计模式之桥接模式
这篇文章介绍了Java设计模式中的桥接模式,包括桥接模式的目的、实现方式,并通过具体代码示例展示了如何分离抽象与实现,使得两者可以独立变化。
43 0