Java使用工厂方法实现聚合调用不同第三方接口进行实名验证

在Java中使用工厂方法实现聚合实名验证指的是创建一种实名验证服务,可以连接到不同的实名验证处理器,比如阿里、腾讯等。我们可以定义一个实名验证接口,然后实现不同的实名验证方式,最后使用一个工厂来创建相应的实名验证实例。以下是一个简化的例子:

  1. 首先定义一个实名验证接口和几个实现这个接口的实名验证方式类。
package your.package;public interface ChannelHandler {Boolean identityTwo(String name, String idCard);
}
package your.package;import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;@Service("ali")
@Slf4j
public class AliHandler implements ChannelHandler {/*** 调用阿里接口进行实名验证* @param name* @param idCard* @return*/@Overridepublic Boolean identityTwo(String name, String idCard) {//todo 调用阿里接口进行实名验证log.info("调用阿里接口进行实名验证");return true;}
}
package your.package;import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;@Service("tencent")
@Slf4j
public class TencentHandler implements ChannelHandler {/*** 调用腾讯接口进行实名验证* @param name* @param idCard* @return*/@Overridepublic Boolean identityTwo(String name, String idCard) {//todo 调用腾讯接口进行实名验证log.info("调用腾讯接口进行实名验证");return true;}
}
  1. 创建一个工厂类来提供不同类型的实名验证方法实例。
package your.package;import your.package.ChannelHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;import java.util.Map;/*** 渠道工厂*/
@Component
public class ChannelHandlerFactory {@Autowired@Lazyprivate Map<String, ChannelHandler> channelHandlerMap;/*** 获取不同的第三方接口处理器** @param channelCode 渠道code (ali,tencent)* @return 具体的实现类*/public ChannelHandler getChannelHandler(String channelCode) {return channelHandlerMap.get(channelCode);}
}
  1. 创建第三方Service
package your.package;public interface ChannelService {Boolean identityTwo(String name, String idCard, String channelCode);}
package your.package.service;import your.package.ChannelHandlerFactory;
import your.package.ChannelHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
@Slf4j
public class ChannelServiceImpl implements ChannelService {@Autowiredprivate ChannelHandlerFactory channelHandlerFactory;@Overridepublic Boolean identityTwo(String name, String idCard, String channelCode) {ChannelHandler channelHandler = channelHandlerFactory.getChannelHandler(channelCode);Boolean result = channelHandler.identityTwo(name, idCard);return result;}
}
  1. Test测试

import your.package.ChannelService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class DemoApplicationTests {@Autowiredprivate ChannelService channelService;@Testpublic void testIdentityTwo() {Boolean result = channelService.identityTwo("张三", "44092319880987611X", "ali");System.out.println("实名验证结果:" + result);}
}

在这里插入图片描述

总结

以上代码演示了工厂方法模式,其中ChannelHandlerFactory定义了创建对象的接口,而具体类(AliHandlerTencentHandler)实现了该接口来创建具体类型的对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/763319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络和Linux解析

目录 1.解析网络 1.OSI七层 2.层级协议 3.名称解析 2.Linux系统基础操作 1.解决问题思路例 2.在局域网内外&#xff0c;连接服务器过程 3.linux基础服务以及搭建 1.基础服务 2.DNS域名解析 4.安全加固 5.应用组合&#xff08;中间件&#xff09; 1.TomcatNginx 1…

自定义WordPress顶部的菜单的方法

要自定义WordPress顶部的菜单&#xff0c;你需要使用WordPress的菜单系统。首先&#xff0c;你需要创建自定义菜单&#xff0c;然后将其设置为顶部导航菜单。 以下是创建自定义菜单并设置其为顶部导航菜单的步骤&#xff1a; 登录到WordPress管理界面。转到“外观”>“菜单…

IAB将在未来全世界数字营销生态中发挥怎样的作用?

写在前面 如果您研究过美国企业早期发展的过程中的组织架构和战略规划&#xff0c;您就会发现&#xff0c;从18世纪末期以来一直到第二次世界大战前夕&#xff0c;美国工业公司基本上成立了技术和自己的实验室。从美国的石油公司&#xff0c;到汽车生产制造&#xff0c;还是化…

C/C++中内存泄漏常有例子

C/C中内存泄漏常有例子 1、什么是内存泄漏&#xff1f; 在定义一个指针的时候&#xff0c;需要给他分配一段内存空间&#xff0c;防止他变为野指针&#xff0c;而这个指针在分配一段内存地址的时候没有释放&#xff0c;等下次再次使用这个指针再次为他分配内存空间&#xff0…

MySQL数据库 - 事务

1. 事务的概念 事务主要用于处理操作量大&#xff0c;复杂度高的数据。比如说&#xff0c;在人员管理系统中&#xff0c; 要删除一个人员&#xff0c;即需要删除人员的基本资料&#xff0c;又需要删除和该人员相关的信息&#xff0c;如信箱&#xff0c; 文章等等。这样&#x…

【嵌入式——QT】QWT应用

【嵌入式——QT】QWT应用 概述步骤一步骤二步骤三代码声明代码实现图示 概述 QWT&#xff0c;全称Qt Widgets for Technical Applications&#xff0c;是一个基于Qt开发的第三方库。它主要为具有技术背景的程序提供GUI组件和一组实用类&#xff0c;用于生成各种统计图。QWT的主…

完全背包的动态规划:暴力dfs + dp + dp优化

有N件物品和一个容量是 V 的背包&#xff0c;每个物品有各自的体积和价值&#xff0c;且每个物品可以放多次&#xff0c;如何让背包里装入的物品具有最大的价值总和&#xff1f; 本篇将给出代码&#xff0c;具体讲解请移步以下博客&#xff1a;动态规划入门&#xff1a;从暴力d…

深度学习pytorch——激活函数损失函数(持续更新)

论生物神经元与神经网络中的神经元联系——为什么使用激活函数&#xff1f; 我们将生物体中的神经元与神经网络中的神经元共同分析。从下图可以看出神经网络中的神经元与生物体中的神经元有很多相似之处&#xff0c;由于只有刺激达到一定的程度人体才可以感受到刺激&#xff0c…

网络安全——笔记

XSS&#xff1a;跨站脚本&#xff08;Cross-site scripting&#xff09; XSS 全称“跨站脚本”&#xff0c;是注入攻击的一种。其特点是不对服务器端造成任何伤害&#xff0c;而是通过一些正常的站内交互途径&#xff0c;例如发布评论&#xff0c;提交含有 JavaScript 的内容文…

hyperf 二十八 修改器 一

教程&#xff1a;Hyperf 一 修改器和访问器 根据教程&#xff0c;可设置相关函数,如set属性名Attribute()、get属性名Attribute()&#xff0c;设置和获取属性。这在thinkphp中也常见。 修改器&#xff1a;set属性名Attribute()&#xff1b;访问器&#xff1a;get属性名Attri…

从零开始手写RPC框架(番外) Netty基础知识点及常见面试题汇总

目录 Netty 的核心组件Bytebuf(字节容器)Bootstrap 和 ServerBootstrap(启动引导类)Channel(网络操作抽象类)SelectorEventLoop(事件循环)NioEventLoopGroup 默认的构造函数会起多少线程?ChannelHandler(消息处理器) 、 ChannelPipeline(ChannelHandler 对象链表)…

进程控制 | 认识fork函数 | 进程终止 | 进程等待

进程创建 初始fork函数 fork函数是为了创建子进程而生的&#xff0c;通过fork函数之后&#xff0c;我们的父进程的代码和数据是共享的&#xff0c;我们这里是可以通过man手册进行查询的&#xff0c;查询之后是可以发现fork函数是会返回两个值的至于为什么会返回两个值&#x…

牛,The O-one ——通过语音交互控制电脑的开源语言模型

模型介绍 The O-one &#xff1a;一个创新的开源语言模型计算机 可以让你通过语音交互来和你的计算机进行对话&#xff0c;完成询问、指令下达等任务。灵感居然来自Andrej Karpathy 的 LLM 操作系统。O1运行一个代码解释语言模型&#xff0c;并在计算机内核发生特定事件时调用…

社科赛斯考研:二十二载岁月铸辉煌,穿越周期的生命力之源

在考研培训行业的浩瀚海洋中&#xff0c;社科赛斯考研犹如一艘稳健的巨轮&#xff0c;历经二十二载风礼&#xff0c;依然破浪前行。在考研市场竞争白热化与学生对于考研机构要求越来越高的双重影响下&#xff0c;社科赛斯考研却以一种分蘖成长的姿态&#xff0c;扎根、壮大&…

六、C#快速排序算法

简介 快速排序是一种常用的排序算法&#xff0c;它基于分治的思想&#xff0c;通过将一个无序的序列分割成两个子序列&#xff0c;并递归地对子序列进行排序&#xff0c;最终完成整个序列的排序。 其基本思路如下&#xff1a; 选择数组中的一个元素作为基准&#xff08;pivot…

基于python+vue共享单车信息系统的设计与实现flask-django-php-nodejs

课题主要分为二大模块&#xff1a;即管理员模块和用户模块&#xff0c;主要功能包括&#xff1a;用户、区域、共享单车、单车租赁、租赁归还、报修信息、检修信息等&#xff1b;快速发展的社会中&#xff0c;人们的生活水平都在提高&#xff0c;生活节奏也在逐渐加快。为了节省…

实在智能受邀参加中国人工智能产业发展联盟大会(AIIA)主题分享,共筑智能体机遇新篇章

近日&#xff0c;中国人工智能产业发展联盟&#xff08;AIIA&#xff09;在海口召开第十一次全体会议&#xff0c;作为该联盟成员单位&#xff0c;实在智能合伙人&核心算法负责人欧阳小刚受邀出席大会&#xff0c;并以《从RPA到智能体&#xff0c;数字员工的发展及在金融行…

BeanUtils.populate()的使用

一、方法解释 BeanUtils位于org.apache.commons.beanutils.BeanUtils下 BeanUtils.populate(Object bean, Map properties) populate是BeanUtils工具类的一个方法 1.1 作用这个方法会遍历map<key, value>中的key&#xff0c;如果bean中有这个属性&#xff0c;就把这个key…

1185: 手机打字

收藏 难度&#xff1a;一般 标签&#xff1a;暂无标签 题目描述 手机的键盘是这样的&#xff1a; 1 2abc 3def 4ghi 5jkl 6mno 7pqrs 8tuv 9wxyz * 0 # 要按出英文字母就必须要按数字键多下。例如要按出x就得按9两下&#xff0c;第一下会出w&#xff0c;而第二下会把w变成x…

《逆水寒》“公费追星”被骂上热搜,玩家为何如此抗拒剧游联动?

游戏行业最近真是风波不断。 《逆水寒》手游因为和武侠剧《莲花楼》深入联动而遭到玩家抵制&#xff0c;网易游戏测评总监被质疑“公费追星”&#xff0c;还波及到了成毅、陈都灵等多位演员。 尤其是《莲花楼》的男主角成毅&#xff0c;遭到大量《逆水寒》手游玩家的吐槽调侃…