一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情。
MVVM的形式
MVVM再Android中的表现形式
另一种形式
MVP和MVC解决问题的思路(闭环式)
- 构建页面(写xml布局)
- 请求数据(写请求/获取数据的逻辑)
- 构建数据(构建返回的数据结构)
- 更新页面(给xml的元素设置值)
MVVM解决问题的思路(并行式)
MVVM中的数据流向
另一种
DataBinding的作用
自动绑定view和viewmodel中的状态和数据,消除大量的样板代码
MVVM重点解决的问题
- 关注点分离,让页面的构建和业务的建模之间松耦合,让这两部分的开发者彼此互不关注,只共同关注页面建模(ViewModel)
- 数据驱动试图,ViewModel的职责是帮View托管数据和状态,由Viewmodel中的数据变化去驱动页面的变化,解决View调用一致性的问题
MVP和MVVM的区别
- 由于依赖倒置的存在,MVP更像一种接口提炼方式,适应场景更多,而MVVM专注于有页面的功能开发
- ViewModel是针对View建模,导致ViewModel和View之间存在耦合,ViewModel不利于(不是不能)代码复用
- DataBinding,Jetpack ViewModel,LiveData, compose,kotlin flow等官方工具库和官方实践,都是为了解决MVC时期存在的问题,这些工具大多符合MVVM(MVI)的思想。