1.3.3 MVVM模式介绍

MVVM是Model View ViewModel的简写,它本质上就是MVC模式的改进版,目的是将其中View的状态及行为抽象化,将视图UI和业务逻辑分开。ViewModel可以做这些事情,它可以取出Model的数据,同时帮助处理View中由于需要展示内容而涉及的业务逻辑。如今越来越多的新技术,例如Silverlight、音频、视频、3D、动画等技术的发展导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF带来了如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM模式便是由MVP模式与WPF结合的应用方式发展演变过来的一种新型架构模式。它立足于原有MVP模式并把WPF的新特性纳入进去,以应对客户日益复杂的需求变化。

1.MVVM模式的优点

MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),以下是MVVM模式的优点。

(1)低耦合。View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化时Model可以不变,当Model变化时View也可以不变。

(2)可重用性。可以将一些视图逻辑放在一个ViewModel中,让很多View重用这段视图逻辑。

(3)独立开发。开发者可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend工具可以很容易地设计界面并生成XAML代码。

(4)可测试。界面素来是比较难测试的,而基于MVVM模式,测试可以针对ViewModel来写。

2.MVVM模式的组成部分

(1)模型:模型是指代表真实状态内容的领域模型(面向对象),或指代表内容的数据访问层(以数据为中心)。

(2)视图:就像在MVC和MVP模式中一样,视图是用户在屏幕上看到的结构、布局和外观。

(3)视图模型:视图模型是暴露公共属性和命令的视图抽象。MVVM模式没有MVC模式的控制器,也没有MVP模式的Presenter,有的是一个绑定器。在视图模型中,绑定器在视图和数据绑定器之间进行通信。

在Microsoft解决方案中,绑定器是一种名为XAML的标记语言。绑定器使开发者免于被迫编写样板式逻辑来同步视图模型和视图。声明性数据和命令绑定隐含在MVVM模式中,声明性数据绑定技术的出现是实现该模式的一个关键因素。