关于 Retrofit 的 ApiService
在使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
还是分开的好,
单一职责原则
,从性能角度基本可以忽略,毕竟不是同时创建大量的对象,加上Retrofit采用的动态代理,所有的方法都是采用的同一个InvocationHandler
进行处理,所以我认为性能几乎没有不同。个人观点是
如果是restful的后台,一种model写一个service比较清晰,这样一个service大概就是get put post delete这几种方法吧。
将同一域下的接口放在一个apiService里就可以了,一个有点规模的App几十个接口不至于管理不过来吧。然后不同域下的接口分成不同的apiService,比如第三方登录,推送。这是比较合理的做法吧
我感觉可以全都可以写在OthersService.class里
建议写在一个类里,你的OthersService在启动的时候初始化一次,之后都用同一个OthersService对象,不用再retrofit.create(OthersService.class)了。
写一个里,不用每次实例化
个人觉得一个域对应一个Service就可以了,不同功能模块的API可以通过命名的方式区分,如果单从性能上来考虑,Service是通过动态代理来实现的,分不同的Service来实现在性能上的不会有什么提升的。