- 46
- 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);
};
});
}
})
想听听大家的想法,探讨下这个写法问题
0
打赏
收藏
点击回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
