跟诸子学游戏 请求发送链

当我们点击一个button的时候,有2条平行线,一条是打开一个界面(view),另一条是一个网络请求.

异步等待数据:

打开一个界面但是服务器数据没有返回,这时的界面会显示空白,可以做提示,等到服务器数据返回进行数据刷新.好处是不卡主线程,界面仍然流动,坏处是需要多在下一个界面做提示信息,并且处理多线程问题.

同步等待数据:

点击button展示一个loading的提示框,等待服务器返回数据,数据返回之后,再将数据传输到界面直接进行展示.好处是节省资源与时间,坏处是用户体验可能不好,网络延迟时,会造成用户流失率严重.

请求时机:

当点击button的时候,后面的连续响应链,是在哪个响应链/响应点上面去请求,是个极大的问题,需要多做考虑.如:点击button的一瞬间,界面打开一瞬间,刚打开的时候,打开完毕之后,稍等个几秒再做请求,都是需要和设计模式契合才能带来效率,不然就是个天坑.

回调方法:

1:回调方法是和请求方法写在一起,即C++中的lambda表达式,C#中的匿名函数,C中的指针函数,OC中的block块,Lua中的方法传递等等,好处是不用再费力去寻找回调方法了,直接从请求那个点向下一直写代码,坏处是对此语言机制不理解,造成内存泄露以及其他问题等.

2:回调方法和请求方法不写在一起,并且分割开来,分文件或者分区域写.好处是代码看起来不杂乱,不会出现语言机制的错误(因为这样很容易做),并且可以使用设计模式进行操作,坏处是,如果没有文档,只有函数调用,你需要花时间去寻找其中的请求方法/回调方法,然后打log进行一步一步解析,在不好的设计模式中,极大的耗费程序员的精力.

解析数据:

1:写在网络请求回调的地方.好处是清晰可见,坏处是代码量臃肿,不能很好的配合设计模式.

2:单独操作数据解析,做法就是写一个公用类,哪里需要哪里调.好处就是封装,不需要调用者知道,坏处是公用类方法很多,有理解不清晰的问题.尤其写lua时,没有规范很容易出现此类问题,消耗时间.

数据保存:

1:数据保存在当前界面的属性上面.好处是使用方便,更改方便,坏处是不符合设计模式,不规范没有MVC的设计思想.

2:数据保存在model中,保存在model中需要在controller里面解析出来,利用方法传递给view层,更新界面,如果将model数据传递给view层,完全破坏了MVC设计模式,更不能直接属性传递,然后刷新.需要保持view的洁净,完全就是view里面的操作,不包含一点数据.与外部操作只用方法/通知/观察等互通有无.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,630评论 0 17
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,949评论 0 38
  • 甜甜今天在ida的带领下选择了一份折布的工作。ida给甜甜示范了一遍,现在请甜甜开始第一遍折布:1)对折布——首先...
    ic班阅读 160评论 0 0
  • 现在这个社会越来越不单纯了,人与人也缺乏了信任,多说一句话都觉得是多余的。有时你走在街上,有人问路,无论知道还是不...
    流诗雨Lemon阅读 202评论 0 1
  • 自从7月2日进京以来,一直奔波于医院和家之间,紧张的像打仗。今天下雨了,在家休养生息,喘口气。 周二人才交材料,与...
    不忘初心_3bda阅读 209评论 0 0