SpringBoot日常:模板方法模式应用

前言

对于很多程序员,平时写代码为了方便,可能一股脑就按面向过程那样一下把业务逻辑编写下来,少有会去额外思考设计模式或者算法。这种情况其实不利于我们的编码维护,在本文,将介绍设计模式中的观察者模式,通过本文的介绍将帮助你快速理解和应用。

1、什么是模板模式?

模板模式是一种行为设计模式,模板模式的核心思想是将共同的算法流程封装在一个抽象类中,具体实现则在子类中实现。通俗点说,就是完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。

2、模板模式的结构

模板模式包括以下几个角色:
(1)抽象类(Abstract Class)
定义了算法的骨架,包含了一些抽象方法和具体方法,抽象方法由子类来实现。抽象类是模板模式的核心,它包含了一个模板方法和多个具体方法
(2)具体类(Concrete Class)
实现了抽象类中的抽象方法,以便在模板方法中被调用。每个具体类实现的具体方法可以不同,但是它们都共享抽象类中定义的具体方法

3、模板模式的实现

现在有这么一个场景,对接某某银行的接口,正常业务接口调用方式采用post+Json的方式,文件上传类型的接口采用from表单提交,文件下载类型的接口采用get获取流数据。那么我们有一个固定的请求流程,则可以抽取一个模板父类。具体的实现交给子类去实现

调用的接口的业务流程是这样的
1、组装请求参数和请求方式
2、发起请求
3、接收返回参数并组装

创建模板父类

public abstract class AbstractBankRequestService {
    /**
     * 组装请求参数
     */
    protected abstract void beforeRequest();

    /**
     * 发起请求
     */
    protected abstract void requestApi();

    /**
     * 处理返回参数
     */
    protected abstract void afterRequest();


    public final void doRequest() {
        beforeRequest();
        requestApi();
        afterRequest();
    }

}

创建实现子类

表单提交请求子类

public  class FormRequestService extends AbstractBankRequestService {


    @Override
    protected void beforeRequest() {
        System.out.println("form表单提交-----提交前");
    }

    @Override
    protected void requestApi() {
        System.out.println("form表单提交-----提交");
    }

    @Override
    protected void afterRequest() {
        System.out.println("form表单提交-----提交后");
    }
}

接口测试

    @GetMapping(value = "/template", produces = MediaType.APPLICATION_JSON_VALUE)
    public void template() {
        FormRequestService formRequestService = new FormRequestService();
        formRequestService.doRequest();
    }

在这里插入图片描述

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值