为了账号安全,请及时绑定邮箱和手机立即绑定

对接多个第三方API时,可使用到那几种设计模式?

对接多个第三方API时,可使用到那几种设计模式?

哔哔one 2018-09-08 15:08:30
问题描述因项目需要,要对接N个第三方API,再将请求API返回的数据转换成自有项目的数据结构,第三个API有可能是一个已经封装好的SDK,有可能是一个URL,也有可能是restful风格的API。为了便于以后扩展及维护,大多数选用那几种设计模式进行开发会比较好?现我想到的是抽象工厂及模板相结合,用抽象工厂模式,将公用部分抽取出来实现用模板模式,实现抽象方法还有什么更好的,请讨论。
查看完整描述

2 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

  1. 策略模式
    首先,根据自有项目数据结构和应用场景,定义数据获取的接口(每个场景对于一个接口,可能会有多个接口),从而将接口定义和具体实现分割。

  2. 模板方法
    对于不同的实现方式(SDK、URL、Restful)定义主流程,比如Restful主流程包括:
    a. 输入参数验证
    b. 输入参数到restful参数转化(将接口输入参数,转化给restful参数)
    c. restful接口调用
    d. restful返回结果解析(成功、失败)
    e. restful返回结果转化(将结果转化为自有数据结构)

  3. 整合(接口定义来自1,实现通用部分来自2,差异部分来自3)
    根据具体实现继承自2创建的模板类,并实现1创建的业务接口,通过完成模板回调方法,完成整个业务。

  4. 其他
    如果有其他需要,比如统一日志、统一性能监控,可以使用proxy模式


查看完整回答
1 反对 回复 2018-09-09
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

根据你的描述我觉得可能这和设计模式没有关系。
而应该用分层设计。
比如典型的例子是:展示层,业务层,数据层。

  1. 展示层就负责接受请求,然后提供组装好的数据返回。

  2. 业务层就处理数据的转换组装,和业务相关的计算等等。它从展示层获得输入,处理后传给数据层,然后从数据层获得返回,处理后再返回给展示层。

  3. 数据层就是你想要的封装各种API的层,根据输入不同它可以去不同的数据层的对象,比如SDK,restful,然后数据层负责和所有第三方API交互,业务层和展示层不需要知道第三方API的存在,数据层和第三方API交互后,获得数据,转换成项目中的统一的数据结构,然后返回给业务层。

然后在数据层才会用到设计模式等,比如可以用工厂模式来创建不同的第三方服务。


查看完整回答
反对 回复 2018-09-09
  • 2 回答
  • 0 关注
  • 3268 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信