目前在教师端和学生端的实现中,eventbus扮演了一个极其重要的角色,eventbus的本意是用于多组件之间的彻底解耦和一对多之间的数据广播,但是在实际使用的过程中出现了很多偏差,目前eventbus在安卓端的具体使用流程是这样的
eventbus使用流程
1.所有的数据模型都集中在数据工厂中进行集中的管理和维护,activity本身不持有任何的数据对象,初始化界面所用的数据对象都来自于数据工厂。
2.activity充当ui处理者,只负责ui方面的呈现与变化,与数据模型和业务逻辑完全解耦,当用户进行与业务逻辑相关的操作的时候activity只需要发送与之相关的数据事件。
3.事件处理者接受activity发送的事件并进行真正的业务逻辑处理(异步访问后台网络接口)。
4.事件处理者执行完业务逻辑处理之后对所得的结果数据进行封装并更新数据工厂中的数据模型并回调activity中的UI处理方法。
5.activity根据持有的数据工厂中的数据对象引用来刷新界面。
出现的问题以及解决方法
1.虽然实现了activity中v与m,c之间的解耦,但是由于采用了事件总线的模式,方法与方法之间的调用关系更不明确,代码的可读性降低,应该进一步优化代码结构使其职责清晰。
2.所有的activity都与数据工厂耦合在一起,并且所有的activity所使用的数据模型都来源自数据工厂,导致数据工厂职责混乱,结构臃肿,应该明确数据工厂的职责,削减数据工厂在整个业务逻辑中的地位,优化数据工厂中的代码结构。