什么是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实现绑定,这是分离不可避免的工作量。


相关文章
|
JavaScript 前端开发 设计模式
什么是MVVM
什么是MVVM
|
移动开发 前端开发 JavaScript
前端开发人员必须了解的七大技能图谱
前端开发人员必须了解的七大技能图谱
384 1
|
物联网 Python 网络性能优化
在ESP32上使用umqtt接入阿里云物联网平台
网络上已经有使用python 模拟设备接入阿里云,手里刚好有块ESP32的小板子,在上面跑过Alios Things,然后接入阿里云。但是终究感觉麻烦,有的时候只是做一个很简单的应用,跑os确实不太方便。
12656 1
|
2月前
|
消息中间件 Oracle Java
Java EE已死?变成Jakarta EE了?一篇文讲清楚
你是否被Java SE、EE、ME和Jakarta EE绕晕?本文用“商业帝国”比喻厘清三者关系:SE是地基(必学核心),EE/Jakarta EE是大厦(企业级开发,现由Eclipse基金会维护),ME已成历史。Android用Java语法但非标准Java。
Java EE已死?变成Jakarta EE了?一篇文讲清楚
|
10月前
|
SQL JavaScript Java
三层架构理解(实现前后端分离)
本文介绍了三层架构实现前后端分离的流程,从前端Vue发起请求,到后端Spring处理数据,最后返回结果并由前端渲染展示。同时详细解析了Bean重复问题的解决方案,包括使用@Service、@Primary、@Qualifier和@Resource注解进行依赖注入控制。此外还介绍了MyBatis中#{}与${}的区别及使用场景,以及三层架构中各组件的协作方式。
|
10月前
|
自然语言处理 监控 机器人
Dify入门指南(5):从零开始构建智能客服机器人(保姆级教程)
无需编程,只需4步,10分钟用Dify搭建智能客服!文末附进阶技巧:数据分析优化、多轮对话设计及人工接管配置,助你打造高效客服助手。
|
缓存 前端开发 JavaScript
优化前端性能的5个技巧
提高网站的性能是前端开发中的重要任务之一。本文将介绍5个实用的技巧,帮助前端开发者优化网页加载速度、提升用户体验,并降低服务器负载。
|
C# 开发者 Windows
震撼发布:全面解析WPF中的打印功能——从基础设置到高级定制,带你一步步实现直接打印文档的完整流程,让你的WPF应用程序瞬间升级,掌握这一技能,轻松应对各种打印需求,彻底告别打印难题!
【8月更文挑战第31天】打印功能在许多WPF应用中不可或缺,尤其在需要生成纸质文档时。WPF提供了强大的打印支持,通过`PrintDialog`等类简化了打印集成。本文将详细介绍如何在WPF应用中实现直接打印文档的功能,并通过具体示例代码展示其实现过程。
1656 0
|
前端开发 UED
【Web 前端】防抖与节流的区别
【4月更文挑战第22天】【Web 前端】防抖与节流的区别
|
前端开发
前端(十二)——深入理解和使用 async和await
前端(十二)——深入理解和使用 async和await
473 1

热门文章

最新文章