为什么选择MVI
-
MVI架构是 google 官方目前推荐的 android app 架构 -
MVI的核心思想是 view-intent-viewmodel-state-view 单向数据流,MVVM核心思想是 view-viewmodel-view 双向数据流 - 代码分层更清晰,
viewmode无需关心view如何触发和更新,只需要维护intent和state即可 -
View与ViewModel的交互更规范,使用 kotlin 密封类特性,封装intent、state,代码规范、整洁、易读 -
Intent和State的引入也解决了ViewModel与Model的界限模糊问题 - MVI架构并不需要引入第三方库,即便在原有的MVVM、甚至MVP基础上也可以衍生出来,重点是领会这种编程思想!
- 装B,新的技术、架构等可以提升代码逼格!这对于一名工程师来说相当相当重要!!!
MVI也有缺点
- 单向流和双向流,并非 好和不好 的选择,而是 适合和不适合 的选择,业务逻辑较为简单的界面,它不需要mvi、mvvm、mvp、mvc,只一个activity或者fragment + layout 即可,一味的套用架构,反而适得其反!
- 逻辑、数据、UI 较为复杂时,
intent、state将会变得臃肿 -
state是不可变类,状态变更时需要创建新的对象,存在一定内存开销 - 并非所有的UI刷新都适合使用
state封装描述
总结
一味的套用架构,反而适得其反!领会编程思想才是最重要的!我见过很多死搬硬套MVP、MVVM的架构,P层、VM层没有什么代码,业务逻辑依然写在V层,这有何意义?