背景
我的项目开发过程中通常会调用一些三方的接口。
例如:对象存储,企业信息查问,短信发送等等。
问题
因为三方的接口通常都是有多个产品能够抉择的,例如,对象存储服务,能够应用阿里云的 OSS,华为云的 OBS,还有本地部署的 FastDFS、Minio 等,所以有时候须要思考扩展性。
通常我的项目应用三方的接口在开发时根本会确定而且日后很少更换,也很难更换(例如对象存储如果须要更换的话,还要牵扯历史数据的迁徙。然而短信服务更换相对来说迁徙老本就很低)。
设计思路
Java 是面向对象语言,听从面相接口开发模式。
设计接口
因为现有的三方接口须要的参数其实差不多,所以能够餐口某一家的设计接口。例如对象存储服务上传对象须要,bucket 名称,对象 id 等。
具体实现
针对接口去做具体的实现。
代码开发方式
整合
- 长处:不须要额定创立 jar 包,单体利用实用。
- 毛病:三方接口可能须要引入本人的 jar 包,maven 中可能须要引入多个三方的 jar 包,不过能够应用 scope 来设置是否打包到我的项目中
拆分
- 长处:能够依据接口独立的开发三方的具体实现,maven 中只须要引入须要的局部
- 毛病:须要额定的 jar 包,不太适宜单体利用
示例
因为想打造一个通用的服务于微服务的性能,所以采纳了 拆分 的代码开发方式开发。
github:
https://github.com/wenyu7980/…
gitee:
https://gitee.com/wenyu7980/w…
总结
本文更多的想展示一种应答三方接口开发的思路,尽管理论开发中很好会呈现更换三方接口的状况。