回复
图解设计模式:身份认证场景的应用(一)
Handpc
发布于 2022-6-21 16:37
浏览
0收藏
今天和大家聊一聊,如何合理的将多种设计模式放到同一个业务场景中
业务背景
最近接到一个认证的需求,C 端用户在购买公司保险时,需要先进行 实名认证确认身份
为了保证 业务复用,单独将认证的逻辑拆分为微服务模块
C 端用户下单购买保险的逻辑大致如下
先说下关于认证相关的一些基本知识。简单来说,你如何证明你是你自己
一些云服务厂商都会有关于验证身份的付费接口,接下来我们就以腾讯云姓名、身份证二要素认证为参考进行举例
说完认证知识,我们再来拆解下用户购买保险的步骤
- 用户在前端发起认证行为
- 请求经过网关调用保险服务,保险服务调用认证服务
- 认证服务调用腾讯云认证付费 API,返回认证结果信息
认证流程
在整个块认证流程中,我们会讲解三种设计模式,按照顺序分别是策略、责任链、模板模式
策略模式
定义一组算法类,将每个算法分别封装起来,让它们可以互相替换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化,客户端代指使用算法的代码
我们拿认证来说,定义一个认证接口,然后实现二、三、四要素以及人脸识别实现;将这些实现类放到一个 Map 容器中,并和业务规定好对应的标识 Key,通过标识 Key 获取对应的认证策略实现
如果真的像上面这么简单,if-else 判断加上拆解几个认证函数就可以搞得定,还真的不一定需要策略模式
我们再延伸来看一种复杂场景:假设后续不满足于腾讯云的认证,为了保证可用性以及更多的流量,需要对接更多的认证平台
可用性:平台的接口不太可能保证全年百分百可用,需要有容灾降级或者替换方案
更多的流量:腾讯云认证接口限流 100次 / S
这个时候策略模式的优点就体现出来了,简化代码的复杂性 以及 保证开闭原则,增加程序的健壮性以及可扩展性
后续再增加三方认证平台和认证方式,都不需要改动原有逻辑,添加对应实现即可
文章转自公众号:龙台的技术笔记
标签
已于2022-6-21 16:37:04修改
赞
收藏
回复
相关推荐