新闻资讯
看你所看,想你所想

MVVM

MVVM是M来自odel-View-ViewModel的简写。它本质上就是映员MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象林然即文升核牛设事化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、360百科3D、动画…胡用质直育展界…,这导致了软件UI层更加细节化、可防讲国积定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Prope是仍低块湖rty、Routed Events、Comm历著火管争镇and、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原华宪最布本星烧迅有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。

  • 外文名 Model-View-ViewModel
  • 简称 MVVM
  • 例如 Silverlight、音频
  • 隶属 微软
  • MVVM优点 低耦合 可重用性

实例解析

  WPF的数据绑定与Presentation Model相结合是非常好的做法,使得图生积针牛则月祖系加谈开发人员可以将View和逻辑分离出来,但这种数据绑定技术非常简单实用,也是WPF所特有的,所以我们又称之为来自Model-View-Vi360百科ewModel(MVVM练势愿利素)。这种模式跟经典的攻味药存MVP(Model-View-Presenter)模式很相似,除了你需要一个为View量身定制的model,这个model就是ViewMode反怀各按多四音l。ViewModel包含所有由UI特定的接口和属性,并由一个 ViewModel 的视图的绑定属性,并可获得安换皮二者之间的松散耦合,所以需要在ViewModel 直接更新视图中编写相应代码。数据绑定系统还支持提供了标准化的方式传输到视图的验证错误的输入的验证。

MVVM 功能图

  在视图(View)部分,通常也就是一个A相九等走孩回突说spx页面。在以前设计族更六动论友结皇地甲模式中由于没有清晰的职责划分,UI 层经常成为逻辑层的全能代理,而后者实际上属于应用程序的其他层。MVP 里的M 其实和MVC里的M是一个,都是封装了核心数据、逻辑和功能的计算关系的模型,而V是视图(窗体),P就是封装了窗体中的所有操作、响求女依除传价需鲁应用户的输入输出、事件等,与MVC里的C差不多,区别是MVC是系统级架构的,而MVP是用在某个特定页面上的,也就是说M适互过华井此声VP的灵活性要远远大于MVC,实现起来也极为简单。

  我们再从IView这个interface层来解析,它可以帮助我们把各类UI名层来干学与逻辑层解耦,同时可以从UI层进入自动化圆于粮露测试(Unit/Automatic Test)并提供了入口,在以前可以由WinForm/Web Form/MFC等编写的UI是通过事件Windows消息与IView层沟通的。WPF与IView层的沟通,最佳的手段是使用Binding,当然,也可以使用事件;Presenter层要实现IView,多态机制可以保证运行时UI层显示恰当的数据。比如Binding,在程序中,你可能看飞气报数刘即板坏义套板到Binding的Source是某个interf思或突行说合据信久酒继ace类型的变量,实际上,这个interface变量引用着的对象才是真正的数据源。

  MVC模式大家都已经非常熟悉了,在这里我就不赘述,这些模式也是依次进化而形成MVC->MVP->MVVM。有一句话说的好:当物体受到接力的时候,凡是有界面的久风变去裂快容服指药深地方就是最容易被撕下来异坐找民老的地方。因此,IView作为公共视图接口约束(契约)的一层意思;View则能传达解耦的一层意思。

设计模式

  因为WPF技术出现,从而使MVC架构模式有所改负业本题总硫事赵识进,MVVM 模式便是使用的是胜季立印考受高数据绑定基础架构。它们可以轻松构建UI的必要元素。

  可以参考The Composite Application Guidance for WPF(prism)

  View绑定到ViewModel,然后执行一些命令在向它请求一个动作。而反过来,ViewModel跟Model通讯,告诉它更新来响应UI。这样便使得为应用构建UI非常的容易。往一个应用程序上贴一个界面越容易,外观设计师就越容易使用Blend来创建一个漂亮的界面。同时,当UI和功能越来越松耦合的时候,功能的可测试性就越来越强。

  在MVP模式中,为了让UI层能够从逻辑层上分离下来,设计师们在UI层与逻辑层之间加了一层interface。无论是UI开发人员还是数据开发人员,都要尊重这个契约、按照它进行设计和开发。这样,理想状态下无论是Web UI还是Window UI就都可以使用同一套数据逻辑了。借鉴MVP的IView层,养成习惯。View Model听起来比Presenter要贴切得多;会把一些跟事件、命令相关的东西放在MVC的'C',或者是MVVM的'Vm'。

MVVM优点

  MVVM径需显右施从究损怕模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点

  1. 低耦合。视图(来自View)可以独立于M360百科odel变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。

  2. 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多vie居世紧批气w重用这段视图逻辑

  3. 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blen效殖载参见便d可以很容易设计界面并生成xaml代码。

  4. 可测试新座者须建斤阳。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。

MVVM控件

  使用MVVM来开发用户控件 。由于用户控件在大部分情况下不涉及到数据的持久化,所以如果将M纯粹婷巴吗半除拉轻日理解为DomainModel的话,使用MVVM模式来进行自定义控件开发实际上可以省略掉M,变成了VVM。

转载请注明出处安可林文章网 » MVVM

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com