本文摘要:使用Spring事件推送机制与aware接口实现策略模式与观察者模式,并使用线程池进行任务异步化。
一、业务场景描述
假设我们要开发银行二类户开户功能,开户方式一需要执行如下步骤:
- 上传基础资料
- OCR检测
- 活体识别
- 绑定银行卡
开户方式二则只需要:
- 上传基础资料
- OCR检测
提交用款申请时,再补充:
- 活体识别
- 绑定银行卡
同时两种方式每个步骤之后都需要异步上报到监控系统。
二、策略模式实现
我们先来实现路由两种开户方式的策略模式:
- 先定义开户接口
public interface OpenAccountHandler {
void execute();
}
- 实现两种开户类
完整开户流程:
@Component("complete")
public class OpenAcctComplete implements OpenAccountHandler{
@Override
public void execute() {
// todo 后续观察者模式实现
}
}
简略开户流程:
@Component("partly")
public class OpenAcctPartly implements OpenAccountHandler {
@Override
public void execute() {
// todo 后续观察者模式实现
}
}
- 实现自定义路由
这里我们先定义一个开户类型枚举:
@Getter
public enum OpenAcctMethodEnum {
COMPLETE("complete", "完整开户模式,需要执行所有流程"),
PARTLY("partly", "部分开户模式,用款申请时补充其他流程");
private String type;
private String desc;
OpenAcctMethodEnum(String type, String desc){
this.type = type;
this.desc = desc;
}
/**
*
* @param type
* @return
*/
public static OpenAcctMethodEnum getEnumByType(String type){
return Arrays.stream(OpenAcctMethodEnum.values())
.filter(eachEnum -> eachEnum.getType().equals(type))
.findFirst().get();
}
}
接下来实现路由的核心逻辑:
@Service

本文通过Spring事件推送机制与ApplicationContextAware接口实现策略模式,用于处理银行二类户开户的两种不同流程。同时,利用观察者模式进行事件监听,通过自定义广播器实现异步上报到监控系统。文章详细介绍了策略模式的实现、观察者模式的实现,以及Spring提供的初始化和自动销毁方法的执行顺序。
最低0.47元/天 解锁文章
1050

被折叠的 条评论
为什么被折叠?



