理解MVVM

MVVM 是由 MVC 发展而来,通过在 Model 之上而在 View 之下增加一个非视觉的组件将来自 Model 的数据映射到 View 中。

MVC(Model-View-Controller)

  • 视图(View):用户界面,展示 UI 界面和响应用户交互
  • 控制器(Controller):业务逻辑,监听模型数据的改变和控制视图行为、处理用户交互
  • 模型(Model):数据保存

简单来说就是通过 controller 的控制去操作 model 层的数据,并且返回给 view 层展示。

  • View 接受用户交互请求
  • View 将请求转交给 Controller 处理
  • Controller 操作 Model 进行数据更新保存
  • 数据更新保存之后,Model 会通知 View 更新
  • View 更新,用户得到反馈

MVVM(Model-View-ViewModel)

MVVM 是在 MVC 模式之后引出的新的开发模式,他与 MVC 模式一样用于把视图(界面)和数据进行解耦,不同的是采用 ViewModel 来完成数据与视图的双向绑定,通过自动化的方式承担大部分数据工作,来解决由于界面复杂化和快速迭代带来的问题。
MVVM 将其中的 View 的状态和行为抽象化,让我们可以将 UI 和业务逻辑分开。MVVM 的优点是低耦合、可重用性、独立开发。

  • View 接收用户交互请求
  • View 将请求转交给 ViewModel
  • ViewModel 操作 Model 数据更新
  • Model 更新完数据,通知 ViewModel 数据发生变化
  • ViewModel 更新 View 数据

不同之处

MVVM 模式和 MVC 有些类似,但有以下不同:

  • ViewModel 替换了 Controller,在 UI 层之下
  • ViewModel 向 View 暴露它所需要的数据和指令对象
  • ViewModel 接收来自 Model 的数据