将请求封装成对象好,还是直接调用好?

发布于 2022-09-07 23:43:35 字数 1267 浏览 21 评论 0

问题描述

一直有一个疑惑,就是将一个请求,封装成一个对象进行管理好,还是直接调用这个接口好?
举个例子:
比如我们有一个接口请求一个数据
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 技术交流群。

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

发布评论

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

评论(4

提笔落墨 2022-09-14 23:43:35

分情况,比如场景一,只用一次的话怎么简单怎么好(未来升级多次调用的话可以重构也很方便)。
如果是要多次调用的接口,当然封装成对象好了,便于维护升级,后台数据升级了,不兼容上一个版本,你要是还用场景一每个地方都要去修改,如果漏了一个就是bug,不稳定也不安全,封装成对象只需要修改一次就ok了,效率也高。

风和你 2022-09-14 23:43:35

一个请求一个接口?

参考学习下 Retrofit:A type-safe HTTP client for Android and Java 吧 ?

递刀给你 2022-09-14 23:43:35

这个问题我最近也考虑过,没想到更好的办法,根据实际场景随机应变吧,复用率高的,应该封装对象以便管理和后期维护

幸福还没到 2022-09-14 23:43:35

这个封不封,只是使用场景有关,如果是你自己开发且不用怎么考虑后期维护,你怎么用都行。如果是多人协同开发,或者是跨团队,跨部门的开发,就算是再小的功能模块都会封装的。如果你参与过开源项目的开发,你就会发现这个现象尤其明显,明明一个很小的功能没必要封装,却浪费了大量的代码封装,因为你写代码主要不是自己看,而是为了别人看的。

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