背景
项目开发过程中通常会调用一些三方的接口。
例如:对象存储,企业信息查询,短信发送等等。
问题
因为三方的接口通常都是有多个产品可以选择的,例如,对象存储服务,可以使用阿里云的OSS,华为云的OBS,还有本地部署的FastDFS、Minio等,所以有时候需要考虑扩展性。
通常项目使用三方的接口在开发时基本会确定而且日后很少更换,也很难更换(例如对象存储如果需要更换的话,还要牵扯历史数据的迁移。但是短信服务更换相对来说迁移成本就很低)。
设计思路
Java是面向对象语言,遵从面相接口开发模式。
设计接口
因为现有的三方接口需要的参数其实差不多,所以可以餐口某一家的设计接口。例如对象存储服务上传对象需要,bucket名称,对象id等。
具体实现
针对接口去做具体的实现。
代码开发方式
- 整合
- 优点:不需要额外创建jar包,单体应用适用。
- 缺点:三方接口可能需要引入自己的jar包,maven中可能需要引入多个三方的jar包,不过可以使用scope来设置是否打包到项目中
- 拆分
- 优点:可以根据接口独立的开发三方的具体实现,maven中只需要引入需要的部分
- 缺点:需要额外的jar包,不太适合单体应用
示例
因为想打造一个通用的服务于微服务的功能,所以采用了拆分的代码开发方式开发。
github:
https://github.com/wenyu7980/wy-file
gitee:
https://gitee.com/wenyu7980/wy-file
总结
本文更多的想展现一种应对三方接口开发的思路,虽然实际开发中很好会出现更换三方接口的情况。
网友评论