MVVM设计模式在WPF中的应用

目录

  • 概述
  • MVVM历史及问题
  • 第一个MVVM程序

概述

  MVVM,即Model-View-ViewModel,亦即模型-视图-视图模型,是一种当前非常流行的设计模式,其最大特点抑或优点是可将UI与逻辑解耦,不仅实现了开发阶段的任务并行同步(View和model的开发分别同步进行),大大提高了开发效率,也使后期维护难度大大降低,减少相应运维成本。特别在大型项目中这些优点尤为突出。

  MVVM模式可用下图来概括:

  具体而言:

  • View,即视图,顾名思义,就是看得见的软件呈现界面,在WPF中就是用XAML及其关联后台实现的那部分,负责与用户交互,接收用户输入,把数据呈现给用户;
  • ViewModel,一个C#通知类,负责收集需要绑定的数据和命令,聚合Model对象,通过View类的DataContext属性绑定到View,同时也可以处理一些UI逻辑;
  • Model,就是系统中的对象,可包含属性和行为;

一般来说,View对应一个ViewModel,ViewModel可以聚合n个Model,ViewModel可以对应多个View,而Model不知道View和ViewModel的存在。

MVVM历史及问题

  1. MVVM的历史

  MVVM是一个相当新的架构,最早于2005年被微软WPF和Silverlight架构师John Gossman提出,并且应用在微软的软件开发中。

  MVVM在使用当中,通常还会利用双向绑定技术,使得Model变化时,ViewModel会自动更新,而ViewModel变化时,View也会自动变化。所以,MVVM 模式有些时候又被称作:model-view-binder模式。

   2. MVVM的问题 

  MVVM在实际使用中,确实能够使得Model层和View层解耦,但如果你需要实现MVVM中的双向绑定的话,那么通常就需要引入更多复杂的框架来实现了。对此,MVVM的作者 John Gossman的批评应该是最为中肯的。John Gossman对MVVM的批评主要有两点:

  第一、数据绑定使得Bug很难被调试。你看到界面异常了,有可能是你View的代码有Bug,也可能是Model的代码有问题。数据绑定使得一个位置的Bug被快速传递到别的位置,要定位原始出问题的地方就变得不那么容易了;

  第二、对于过大的项目,数据绑定需要花费更多的内存。

第一个MVVM程序

  待续...

posted @ 2017-09-15 13:42  Avin  阅读(471)  评论(0编辑  收藏  举报