将请求封装成对象好,还是直接调用好?
问题描述
一直有一个疑惑,就是将一个请求,封装成一个对象进行管理好,还是直接调用这个接口好?
举个例子:
比如我们有一个接口请求一个数据
void requestData(int param, Callback callback);
场景1:
点击按钮,请求数据,展示数据
那么直接使用一般比较简单。
onClick(View v) {
requestData(123, new Callback() {
onCallback(String data) {
someTextView.setText(data);
}
});
}
场景2:
如果一个界面,可以一个请求,发起多次,因为参数不同,数据会不一样,比如一个日历界面,请求1号,请求3号的数据,都是可以的,因为时间不同,数据不一样。
这个时候,我觉得封装成一个对象比较好管理。
class RequestDataSession implements Callback{
void start(int time) {
requestData(time, this);
}
onCallback(String data) {
// do things.
}
}
onDateSelect(int time) {
RequestDataSession rds = new RequestDataSession();
rds.start(time);
}
像上面这种情况,这样每个请求都是独立的,就便于管理。
我觉得封装成对象比较好管理,因为我可以跟踪每个请求是否在请求中isReuqesting,也可以实现场景2这种不同参数的多个请求。
场景1,其实是场景2的一个特例而已。
但是最近有遇到一些需求,发现使用方法直接调用链式的写法,也比较好。
就是当请求A回来后要调用请求B,请求B再调用请求C。这样如果我封装成对象来操作,就很难拆开,很难在里面加过程。
但是如果直接方法调用,就比较方便。
requestA(new CallbackA() {
onA() {
requestB(new CallbackB() {
onB() {
requestC(xxxx);
};
});
}
})
想听听大家的想法,探讨下这个写法问题
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
分情况,比如场景一,只用一次的话怎么简单怎么好(未来升级多次调用的话可以重构也很方便)。
如果是要多次调用的接口,当然封装成对象好了,便于维护升级,后台数据升级了,不兼容上一个版本,你要是还用场景一每个地方都要去修改,如果漏了一个就是bug,不稳定也不安全,封装成对象只需要修改一次就ok了,效率也高。
参考学习下 Retrofit:A type-safe HTTP client for Android and Java 吧 ?
这个问题我最近也考虑过,没想到更好的办法,根据实际场景随机应变吧,复用率高的,应该封装对象以便管理和后期维护
这个封不封,只是使用场景有关,如果是你自己开发且不用怎么考虑后期维护,你怎么用都行。如果是多人协同开发,或者是跨团队,跨部门的开发,就算是再小的功能模块都会封装的。如果你参与过开源项目的开发,你就会发现这个现象尤其明显,明明一个很小的功能没必要封装,却浪费了大量的代码封装,因为你写代码主要不是自己看,而是为了别人看的。