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

发布于 2022-09-07 21:38:53 字数 242 浏览 39 评论 0

问题描述

因项目需要,要对接N个第三方API,再将请求API返回的数据转换成自有项目的数据结构,第三个API有可能是一个已经封装好的SDK,有可能是一个URL,也有可能是restful风格的API。

为了便于以后扩展及维护,大多数选用那几种设计模式进行开发会比较好?
现我想到的是抽象工厂及模板相结合,

用抽象工厂模式,将公用部分抽取出来实现
用模板模式,实现抽象方法

还有什么更好的,请讨论。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

久随 2022-09-14 21:38:53

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

  1. 展示层就负责接受请求,然后提供组装好的数据返回。
  2. 业务层就处理数据的转换组装,和业务相关的计算等等。它从展示层获得输入,处理后传给数据层,然后从数据层获得返回,处理后再返回给展示层。
  3. 数据层就是你想要的封装各种API的层,根据输入不同它可以去不同的数据层的对象,比如SDK,restful,然后数据层负责和所有第三方API交互,业务层和展示层不需要知道第三方API的存在,数据层和第三方API交互后,获得数据,转换成项目中的统一的数据结构,然后返回给业务层。

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

最好是你 2022-09-14 21:38:53
  1. 策略模式
    首先,根据自有项目数据结构和应用场景,定义数据获取的接口(每个场景对于一个接口,可能会有多个接口),从而将接口定义和具体实现分割。
  2. 模板方法
    对于不同的实现方式(SDK、URL、Restful)定义主流程,比如Restful主流程包括:
    a. 输入参数验证
    b. 输入参数到restful参数转化(将接口输入参数,转化给restful参数)
    c. restful接口调用
    d. restful返回结果解析(成功、失败)
    e. restful返回结果转化(将结果转化为自有数据结构)
  3. 整合(接口定义来自1,实现通用部分来自2,差异部分来自3)
    根据具体实现继承自2创建的模板类,并实现1创建的业务接口,通过完成模板回调方法,完成整个业务。
  4. 其他
    如果有其他需要,比如统一日志、统一性能监控,可以使用proxy模式
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文