不明白这儿的各种xxxCennter与xxxDispatcher的作用

来源:8-9 客户端数据流封装-统一通知-1

慕用1394343

2019-02-15

如题 我看这儿写了这个的作用好像就是把UserCard给build成了User而已 还是说有其它作用或这样写有什么好处吗

写回答

1回答

Qiujuer

2019-02-16

嗯,这个问题怎么给你解释好呢;容我想一想。。


是这样的,从课程的作用来说是把UserCard转变为了User;这样的目的在于将传输中的数据转换为了实际有意义的逻辑数据。


比如网络传输给我了一个用户的基本信息,当我接收到的时候我会根据这个信息在本地构建对应的用户实例,然后使用这个实例去做后续的逻辑处理。这里肯定会有疑问:UserCard、User这么相似,为啥还需要转化一下?


其实是这样的,在企业开发中往往是分层级,分模块的,可能有同学实现了一整套的基础调度逻辑,其定义为User,在User中有字段id,代表用户的唯一标志;当然还有很多很多其他的字段。

此时服务器的同学开发完成了,然后服务器同学非常抽风的返回用户信息的时候使用的是user_id,当然其他字段也可能有差异;如果此时我们去更改User也是可以做到适配,但是以后又有一个新的接口返回的又是author_id,那咋办??


所以此时就有

Dispatcher

等相关的类出现了,这些类的职责就是帮助将网络数据转化为本地实际的有意义的实例,免去一个独立的类太过于复杂的情况。

当然我们也可以将这样的职责放到一个Helper中去完成这也是可以的。当然这仅仅局限于项目的业务少的情况,如果经过很多人的迭代,服务器也转手很多次后会发现这个Helper太多的方法,太多的逻辑,这就不方便维护了。


课程的代码虽然不多,但是基本上是按标准企业开发来划分的结构,甚至可以说很多企业的代码都没有IM课程的标准;当然也因为课程的逻辑划分较多但时间有限,所以没有很详细的去解释为什么这么做,这是我的疏忽~~


在课程后面会有一些大概的层级划分解释,你可以往后再看看,希望看完后能够有所理解;当然有任何疑问都可以随时找我即可。


希望你学习有所收获~祝好!

2
1
慕用1394343
感谢老师的详细解答!
2019-02-16
共1条回复

手把手开发完整的即时通讯App 客户端+服务端+MVP架构

客户端+服务端+MVP架构+封装思想+主流框架

1755 学习 · 874 问题

查看课程