什么是mvvm

简介: 什么是mvvm

前言

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模式的组成部分

模型


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


视图


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


视图模型


视图模型是暴露公共属性和命令的视图的抽象。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实现绑定,这是分离不可避免的工作量。


相关文章
|
11月前
|
JavaScript 前端开发 设计模式
什么是MVVM
什么是MVVM
|
6月前
|
前端开发 数据安全/隐私保护
什么是mvvm,mvp、mvc和mvvm模式有什么区别?
什么是mvvm,mvp、mvc和mvvm模式有什么区别?
125 0
|
6月前
|
前端开发
什么是MVVM架构?
MVVM是Model-View-ViewModel的简写。它本质上就是MVC的改进版。MVVM模式有助于将应用程序的业务和表示逻辑与用户界面 (UI) 清晰分离。 保持应用程序逻辑和UI之间的清晰分离有助于解决许多开发问题,并使应用程序更易于测试、维护和演变。 它还可以显著提高代码重用机会,并允许开发人员和UI设计人员在开发应用各自的部分时更轻松地进行协作。
94 2
|
2月前
|
开发框架 前端开发 JavaScript
|
6月前
|
前端开发 JavaScript 编译器
一个简单的MVVM
一个简单的MVVM
|
6月前
|
存储 前端开发 JavaScript
什么是MVVM?MVC、MVP与MVVM模式的区别?
什么是MVVM?MVC、MVP与MVVM模式的区别?
|
6月前
|
前端开发 JavaScript 架构师
什么是 MVVM?
什么是 MVVM?
58 0
|
前端开发 JavaScript
什么是MVVM?
MVVM,是Mode1-View-ViewModel的简写,是M/-V-VM三部分组成。它本质上就是MVC的改进版。MVVM就是将其中的View的状态和行为抽象化,其中ViewModel将视图U和业务逻辑分开,它可以取出Model的数据间时帮忙处理View中由于需要展示内容而涉及的业务逻辑
113 0
|
存储 前端开发 测试技术
mvvm讲解
mvvm讲解
47 0
|
JavaScript 前端开发 容器
实现一个自己的MVVM(一)
实现一个自己的MVVM
67 0