架构-大话MVVM

124 阅读1分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情

MVVM的形式

image.png

MVVM再Android中的表现形式

image.png

另一种形式

image.png

MVP和MVC解决问题的思路(闭环式)

image.png

  1. 构建页面(写xml布局)
  2. 请求数据(写请求/获取数据的逻辑)
  3. 构建数据(构建返回的数据结构)
  4. 更新页面(给xml的元素设置值)

MVVM解决问题的思路(并行式)

image.png

MVVM中的数据流向

image.png

另一种

image.png

DataBinding的作用

image.png

自动绑定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)的思想。