金融信贷风控系统设计模式应用之模版方法

发布于:2024-05-18 ⋅ 阅读:(169) ⋅ 点赞:(0)

背景介绍

风控系统每种场景 如个人消费贷 都需要跑很多规则

  • 规则1 申请人姓名身份证号实名验证
  • 规则2 申请人手机号码实名认证
  • 规则3 银行卡预留手机号码实名认证
  • 规则4 申请人银行卡预留手机号码在网状态检验
  • 规则5 申请人银行借记卡有效性核验
  • 规则6 户籍地址与身份证号归属地比对

而这些规则的验证都需要调用外部收费接口 鉴于外部接口调用逻辑很多可以复用 于是使用模板方法模式进行封装。

调用外部接口模板方法

  • 组装入参 (不同的接口有不同的入参 因为接口有数十个 省去创建数十个对象 入参统一使用Map)
  • 发送请求 (可以统一)
  • 返回内容解析 (不同的接口有不同的返回 返回对象统一继承FeeData
  • 返回对象

AbstractFeeDataManagerTemplate

  • getFeeData(params) // 得到接口返回数据
  • abstract buildParams(Map params) // 组装该接口特有恒定的入参
  • private sendRequest(param) // 发送请求
  • abstract FeeData resolveResponse(String response) // 解析不同返回内容 统一返回FeeData

设计类图
在这里插入图片描述
伪代码

public abstract class AbstractFeeDataManagerTemplate {
    protected abstract void buildParams(Map params);

    public FeeData getFeeData(Map params){
        buildParams(params);
        String response = sendRequest(params);
        return resolveResponse(response);
    }

    protected abstract FeeData resolveResponse(String response);

    private String sendRequest(Map params) {
        //使用HttpClient调用外部接口
        return "";
    }
}

public class NameIdCardVerificationManager extends AbstractFeeDataManagerTemplate {


    protected void buildParams(Map params) {
        // 组装此接口特有且恒定入参 如
        params.put("code", "NAME_IDCARD_VERIFICATION");

    }

    protected FeeData resolveResponse(String response) {
        // 解析接口返回 并组装成FeeData返回 
        return null;
    }
}

网站公告

今日签到

点亮在社区的每一天
去签到