学习笔记:设计模式之模板模式

2020-10-23  本文已影响0人  大力papa

本文仅供学习交流使用,侵权必删。
不作商业用途,转载请注明出处

WHAT 什么是模板模式

模板模式(Template Method Design Pattern),就是在方法中预先定义好一个代码的流程骨架,将某些步骤的逻辑实现放到子类中去实现。子类可以只关注需要实现的方法,无需了解整个算法流程。
记得之前看过servlet,AQS和类加载的功能源码等都会用到模板设计方法。

WHY 为什么使用模板模式

优点

缺点

HOW 模板模式的实现(JAVA)

场景:企业与各行方数据都有对应的上传接口,每个银行的上传数据方式都不一样,调用restful,ws或者ftp上传等。但上传流程骨架整体都是一样,都是获取数据、校验数据、上传以及上传后处理。针对这种方式,我们把不变的流程骨架代码抽象出来,将变化的业务逻辑延迟到子类里面实现


public abstract class UploadService {
    
    public final void execute(String payload) {

        List lst = getData(payload);
        if (lst != null && lst.size() > 0) {
            if (validation(lst)) {
                upload(lst);
                afterUpload(payload);
            } else {
                // TODO: 抛出校验失败异常
            }
        }
    }

    abstract List getData(String payload);

    abstract boolean validation(List lst);

    abstract void upload(List lst);

    abstract void afterUpload(String payload);
}


public class BankCommUploadService extends UploadService {
    @Override
    List getData(String payload) {
        return Arrays.asList("bankcomm1", "bankcomm2", "bankcomm3");
    }

    @Override
    boolean validation(List lst) {
        return true;
    }

    @Override
    void upload(List lst) {
        System.out.println("bankcomm upload");
        lst.forEach(data -> {
            System.out.println(data);
        });
    }

    @Override
    void afterUpload(String payload) {
        System.out.println("upload success: " + payload);
    }
}

持续更新...

上一篇 下一篇

猜你喜欢

热点阅读