EventBus之快速搭建简单MVVM架构模式

最近接手一个二手项目,原来使用网络流传的MVP架构可把我累得够呛。写一个activity要建接口和P 3至4个java文件的麻烦不说,就P的复用需要实现接口和baseView(相当于不能复用)很让我怀疑可能接手了一个假MVP 。φ(>ω<*) 好啦,下面开始进入正题:
在你也怀疑MVP的时候,在你也想了解Google Android AAC架构组件而担心没有足够时间去学习(建议学习,只需学习viewModle和liveData你就可以嫌弃本文喽),本文正适合你。

一、思想

起源于使用EventBus过程中,诞生于实践和经验和偶然。因为EventBus在其中不可剥离,我又称其为EventBus核心事件驱动之MVVM模式。无论MVP/MVVM架构其目的都是把View和逻辑分离,我这里核心思想是利用EventBus事件联系View和逻辑(ViewModle)。

二、架构图

架构图

  1. View :即Activity、Fragment、Layout xml等,持有ViewModle对象。
  2. ViewModle:逻辑和运算,提供接口给View获取要展示的数据;
  3. Modle:数据对象啦,规范的数据面向对象的编程必不可缺;
  4. RESOP:数据来源提供者。这一层我现在未用代码散放在ViewModle中,参考AAC需要的业务位置,建议独立抽出
  5. db:画图时画这样了懒得改。代表一切本地数据:数据库,文件,SharedPreferences…
  6. Net:远端数据。

三、运行流程

以天气预报为例:

  1. View注册EventBus接收者;
  2. View使用持有的viewModel对象告知ViewModle去获取天气信息;
  3. ViewModle通过RSOP得到天气信息,将数据封装成Modle;
  4. ViewModle发送EventBus事件告知View获取天气信息结果;
  5. View收到事件,通过持有的viewModle对象获取实际信息展示在View上。

四、总结

成功分离View与逻辑,比MVP更简单更自由,ViewModle容易复用。
不足,现项目中的ViewModle是View创建时创建持有,不能实现多View共享内存中的ViewModle,可根据实况考虑使用单列或其它更好方式实现多view共享数据。EventBus事件驱动要求对事件规范化,建议事件不包含数据对象,获取数据对象由ViewModle提供geter();


Demo下载 For GitHub
注:如有纰漏请指正。如有疑问欢迎留言探讨

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值