MVVM 模式的理解
MVVM 全称 Model-View-ViewModel 是基于 MVC 和 MVP 体系结构模式的改进,MVVM 就是 MVC 模式中的 View 的状态和行为抽象化,将视图 UI 和业务逻辑分开,更清楚地将用户界面 UI 的开发与应用程序中业务逻辑和行为的开发区分开来。
描述
MVVM 模式简化了界面与业务的依赖,有助于将图形用户界面的开发与业务逻辑或数据模型的开发分离开来。在 MVVM 中的 ViewModel 作为绑定器将视图层 UI 与数据层 Model 链接起来,在 Model 更新时,ViewModel 通过绑定器将数据更新到 View,在 View 触发指令时,会通过 ViewModel 传递消息到 Model,ViewModel 像是一个黑盒,在开发过程中只需要关注于呈现 UI 的视图层以及抽象模型的数据层 Model,而不需要过多关注 ViewModel 是如何传递的数据以及消息。
组成
Model
- 以面向对象来对对事物进行抽象的结果,是代表真实状态内容的领域模型。
- 也可以将
Model称为数据层,其作为数据中心仅关注数据本身,不关注任何行为。
View
View是用户在屏幕上看到的结构、布局和外观,即视图UI。- 当
Model进行更新的时候,ViewModel会通过数据绑定更新到View。
ViewModel
ViewModel是暴露公共属性和命令的视图的抽象。ViewModel中的绑定器在视图和数据绑定器之间进行通信。- 在
Model更新时,ViewModel通过绑定器将数据更新到View,在View触发指令时,会通过ViewModel传递消息到Model。
优点
- 低耦合: 视图
View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。 - 可重用性: 可以把一些视图逻辑放在一个
ViewModel里面,让很多View重用这段视图逻辑。 - 独立开发: 开发人员可以专注于业务逻辑和数据的开发
Model,设计人员可以专注于页面设计。 - 可测试: 界面素来是比较难于测试的,测试行为可以通过
ViewModel来进行。
不足
- 对于过大的项目,数据绑定需要花费更多的内存。
- 数据绑定使得
Bug较难被调试,当界面异常,可能是View的代码有问题,也可能是Model的代码有问题,数据绑定使得一个位置的Bug可能被快速传递到别的位置,要定位原始出问题的地方就变得不那么容易了。