前言
MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。
提示:以下是本篇文章正文内容,下面案例可供参考
一、mvvm是什么?
MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。
二、MVVM模式的组成部分
-
模型
-
视图
-
视图模型
-
视图模型是暴露公共属性和命令的视图的抽象。MVVM没有MVC模式的控制器,也没有MVP模式的presenter,有的是一个绑定器。在视图模型中,绑定器在视图和数据绑定器之间进行通信。
-
绑定器
-
声明性数据和命令绑定隐含在MVVM模式中。在Microsoft解决方案堆中,绑定器是一种名为XAML的标记语言。绑定器使开发人员免于被迫编写样板式逻辑来同步视图模型和视图。在微软的堆之外实现时,声明性数据绑定技术的出现是实现该模式的一个关键因素。
三、优点
1、Controller简洁清晰
ViewModel分离出来大部分的Controller代码,更加清晰和容易维护。
2、方便测试
大部分Bug来自于逻辑处理,由于ViewModel把逻辑分离出来,可对ViewModel构造单元测试。
3、开发解耦
1. 一位开发者负责逻辑实现,另一位开发者负责UI实现
2. 敏捷开发中,并非等后端借口提供后再开发,提供前可完成Controller和View的开发工作。
四、缺点
1、代码量比MVC多。
2、需对每个Controller实现绑定,这是分离不可避免的工作量。