关于 Retrofit 的 ApiService

发布于 2022-09-02 10:33:19 字数 484 浏览 13 评论 0

在使用 retrofit 的时候,是将 api 接口写在一个 Interface 里,再使用 Retrofit.Builder 来生成该 Interface 的实例来用的。

例如有一个 ApiService,

    Retrofit retrofit = new Retrofit.Builder()
                            .client(client)
                            .baseUrl(BASE_URL)
                            .build();
    apiService = retrofit.create(ApiService.class);

那么,假如我的项目中有很多接口,我是全部接口 api 都丢进 ApiService 里面呢,
还是分开各部分功能的 API,分别使用不同的 xxxService 呢?
主要是考虑性能是否有所不同?

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

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

发布评论

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

评论(7

甜心 2022-09-09 10:33:19

还是分开的好,单一职责原则,从性能角度基本可以忽略,毕竟不是同时创建大量的对象,加上Retrofit采用的动态代理,所有的方法都是采用的同一个InvocationHandler进行处理,所以我认为性能几乎没有不同。

毅然前行 2022-09-09 10:33:19

个人观点是
如果是restful的后台,一种model写一个service比较清晰,这样一个service大概就是get put post delete这几种方法吧。

像极了他 2022-09-09 10:33:19

将同一域下的接口放在一个apiService里就可以了,一个有点规模的App几十个接口不至于管理不过来吧。然后不同域下的接口分成不同的apiService,比如第三方登录,推送。这是比较合理的做法吧

心作怪 2022-09-09 10:33:19

我感觉可以全都可以写在OthersService.class里

多情癖 2022-09-09 10:33:19

建议写在一个类里,你的OthersService在启动的时候初始化一次,之后都用同一个OthersService对象,不用再retrofit.create(OthersService.class)了。

凉墨 2022-09-09 10:33:19

写一个里,不用每次实例化

意中人 2022-09-09 10:33:19

个人觉得一个域对应一个Service就可以了,不同功能模块的API可以通过命名的方式区分,如果单从性能上来考虑,Service是通过动态代理来实现的,分不同的Service来实现在性能上的不会有什么提升的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文