MVVM架构模式

news2025/3/13 6:52:29

目录

      • 一、MVVM简介
      • 二、MVVM结构
      • 三、MVC
      • 四、MVP
      • 五、MVVM的优势与存在的问题

一、MVVM简介

MVVM是Model-View-ViewModel的简写。即是模型-视图-视图模型。
MVVM架构模式是一种软件设计模式,它将应用程序分为三个部分:模型(Model)、视图(View)和视图模型(ViewModel)。该模式的目的是将用户界面(UI)逻辑与业务逻辑分离,以便开发人员可以更轻松地管理和修改应用程序。

在MVVM模式中,模型表示应用程序中的数据和业务逻辑,视图表示用户界面,视图模型则是连接模型和视图的桥梁。视图模型从模型获取数据并将其转换为视图可以理解的形式,然后将其传递给视图。视图模型还接收来自视图的用户输入,并将其传递给模型进行处理。视图模型可以实现命令、验证、异常处理等功能,以便在应用程序中实现更加完整和健壮的业务逻辑。

MVVM模式的优点包括:提高代码的可维护性、可测试性和可重用性;隔离复杂的UI逻辑;改善团队合作(开发人员可以专注于他们的领域)等。

二、MVVM结构

在这里插入图片描述

  • model模型

    • 指的是后端传过来的数据。
  • view视图

    • 指的是所有看到的页面,可以理解为将数据以某种方式呈现给用户。
  • ViewModel

    • 指的是视图模型,他是连接view和model的桥梁。

从上面的图片可以大致看到,有两个不同的方向。

  1. 模型->视图
    解析:将后端数据转换为前端的页面。实现的方式是数据绑定。

  2. 视图->模型
    解析:将前端页面转换为后端数据的实现方式:叫做Dom数据监听。
    存在两个方向都能实现的情况下,叫做数据的双向绑定。

三、MVC

MVVM是Model-View-ViewModel的简写。本质上就是MVC的改进版。
MVCModel View Controller的简写, 即模型-视图-控制器。M和V指的意思和MVVM中的M和V意思一样。C即Controller指的是页面业务逻辑。使用MVC的目的就是将M和V的代码分离,从而使同一个程序可以使用不同的表现形式。
在这里插入图片描述

  1. View 传送指令到 Controller
  2. Controller 完成业务逻辑后,要求 Model 改变状态
  3. Model 将新的数据发送到 View,用户得到反馈
    可以看到其所有的通信都是单向的。view和model是直接进行通信的。view和model之间随着业务量的不断庞大,会出现和蜘蛛网一样难以处理的关系,随着前端应用的复杂程度越来越复杂。所以必须要改进。
    原文链接

四、MVP

MVP是 Model View Presenter 的简写。它与MVC的不同是改变了通信方向
MVVM是MVC的改进版,立足于MVP并进一步的改进

在这里插入图片描述

  1. 各部分之间的通信,都是双向的。
  2. View 与 Model 不发生联系,都通过 Presenter 传递。
  3. View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

五、MVVM的优势与存在的问题

  • 优点
    • 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
    • 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
    • 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
    • 可测试。界面素来是比较难于测试的,测试可以针对ViewModel来写。
  • 缺点
    • 有人认为对于简单的UI,MVVM可能过于庞大。
    • 在View和ViewModel之间没有提供紧密的耦合
    • 当具有复杂的数据绑定时,调试过程将很复杂。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/943925.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Databend 开源周报第 108 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 多源数据目录 …

WebDAV之π-Disk派盘 + 小象记账

小象记账是一款非常干净便捷的手机记账软件,这款软件的界面非常的简洁,整体以大面积的背景色、文字与符号的黑灰色为主,非常的简约,而且它的字体采用的是幼圆类字体并提高了字重,与整体的设计风格交相呼应,不仅提升了文字可读性还减少了用户的视觉疲劳。除了出色的外表之…

AMEYA360:兆易创新获得ISO 26262 ASIL D流程认证, 汽车功能安全管理体系再上新台阶

中国北京(2023年8月29日) —— 业界半导体器件供应商兆易创新GigaDevice(股票代码 603986)今日宣布,获得由国际公认的测试、检验和认证机构通标标准技术服务有限公司(以下简称SGS)授予的ISO 26262:2018汽车功能安全最高等级ASIL D流程认证证书,这标志着兆…

考研408 | 【操作系统】 文件管理

初识文件管理 文件属性: 文件内部的数据应该怎样组织起来? 操作系统应该向上提供哪些功能? 从上往下看,文件应该如何存放在外存? 其他需要由操作系统实现的文件管理功能 总结: 文件的逻辑结构 无结构文…

vue可编辑表格

内容包含:校验。下拉框。输入框。日期控件 效果图 1.代码目录 2.index.js import SjjEditable from ./src/editable.vue // import Vue from vueSjjEditable.install = function (Vue) {Vue.component(SjjEditable.name, SjjEditable) }export default SjjEditable 3.util…

G4学术期刊《中小学电教》期刊简介//投稿要求

G4学术期刊《中小学电教》期刊简介//投稿要求 《中小学电教》 由吉林省教育厅主管,吉林省电教馆主办的基础教育期刊,围绕各级中学、小学和幼儿园的现代教育技术、包括常规电教、信息技术教育、网络教育和远程教育等教育技术领域的理论、热点和重点问题的…

多模态论文串讲(bryanyzhu老师)记录

文章目录 回顾ViLT和CLIP序言ALBEF摘要方法实验 VLMo引言方法实验 BLIP引言实验 CoCaBeiTv3摘要方法实验 总结 传统的多模态: 检索, 视觉问答(闭集,分类,开集,生成), 视觉推理(判断文本能否描述图像), 视觉蕴含(给定假设能否推理出前提) 新颖的多模态: language-guided detecti…

韶音的耳机怎么样,韶音骨传导耳机防水吗

韶音耳机在电声学这方面还是有着比较成熟的骨传导技术,现如今关于骨传导领域的耳机是有着韶音OpenRun Pro以及OpenSwim,很显然,通过名字就可以看出是将运动跟游泳给区分开了。 其中韶音OpenRun Pro也是存在着一定的亮点 亮点一: …

简易虚拟培训系统-UI控件的应用1

前言 前面的文章介绍了关于Oculus设备与UI控件的关联,从本文开始采用小示例的方式介绍基本的UI控件在系统中的基本作用(仅介绍“基本作用”,详细的API教程可参考官方文档)。应用的背景是工程场景类的虚拟培训系统,系统…

最简单的爬虫!只需要粘贴你要爬虫的网址

依赖 必须按照这个库,爬虫必备! pip install requests四行代码 import get import save spider_text get.html("https://www.baidu.com/") save.file(spider_text)使用 更改 get.html() 中的参数,改成你想要爬取的网站的地址&…

如何打造创新文化虚拟展厅?一文了解虚拟展厅优势

引言: 时光荏苒,科技在不断进步,创新也不再局限于产品和服务,而是深刻融入各行业的方方面面。在这个充满机遇与挑战的时代,创新文化虚拟展厅应运而生,成为展示创新实力、推动文化传承的独特方式。 一&…

数字孪生技术:智能化引领产业变革

数字孪生作为一项创新性技术,正逐渐引发全球范围内的广泛关注。它不仅仅是一种模拟或仿真工具,更是一种能够深刻影响人类生活和产业的前沿技术。数字孪生的终极价值在于为现实世界带来了前所未有的智能化、精准化和高效化,以及对未来可持续发…

42、基于51单片机的蓝牙智能手环系统(全套资料)

编号:42 基于51单片机的蓝牙智能手环系统 功能描述: 本设计由STC89C52单片机最小系统ADXL345三轴加速传感器模块DS1302时钟模块DS18B20温度传感器模块Pulse Sensor心率采集模块BT06蓝牙模块LCD1602显示模块键盘模块组成 1、采用STC89C52单片机为主控制…

Leetcode Top 100 Liked Questions(序号75~104)

75. Sort Colors 题意&#xff1a;红白蓝的颜色排序&#xff0c;使得相同的颜色放在一起&#xff0c;不要用排序 我的思路 哈希 代码 Runtime 4 ms Beats 28.23% Memory 8.3 MB Beats 9.95% class Solution { public:void sortColors(vector<int>& nums) {vector…

Ping32客户端安装注册

登录Ping32&#xff0c;进入主界面 回到“开始”界面 在桌面会生成客户端安装程序

EOCR电机保护器MODBUS通讯的使用

在工厂自动化中&#xff0c; 数据连接是必不可少的&#xff0c; 尤其是在工业4.0概念不断扩大其覆盖范围的今天。而通过EOCR的MODBUS通讯&#xff0c;用户可将电动机的运行状态、运行电流、故障原因及时间等信息传输至上位机中&#xff0c;以方便用户实时监测电动机的状态&…

《Linux多线程服务端编程》读书笔记(一)

线程安全 一个线程安全的类应该满足下面三个条件 多个线程同时访问&#xff0c;其表现出正确的行为无论操作系统如何调度这些线程&#xff0c;无论这些线程的执行顺序如何交织调用端代码无需额外的同步或其他协调动作 对象的线程安全 对象构造要做到线程安全&#xff0c;唯…

弹幕引擎使用教学

欢迎阅读 弹幕引擎 / 弹幕会模板 使用教学&#xff01; 不知道您是否听说过“弹幕游戏”&#xff0c;Scratch 闯关游戏作品&#xff1a;东方虹魔馆 如果听说过&#xff0c;那就太好啦&#xff01;您很有可能已经对“弹幕”甚至“符卡”有了认识基础。没有也不要紧&#xff0c;您…

智能化新十年,“全栈智能”定义行业“Copilot智能助手”

“智能化转型是未来十年中国企业穿越经济周期的利器”&#xff0c;这是联想集团执行副总裁兼中国区总裁刘军在去年联想创新科技大会上做出的判断&#xff0c;而2023年正值第四次工业革命第二个十年的开端&#xff0c;智能化是第四次工业革命的主题。2023年初&#xff0c;基于谷…

红盟云卡系统v1.1.17虚拟商品在线售卖平台源码

红盟云卡系统是一款基于PHPMySQL开发的虚拟商品在线售卖平台 v1.1.17.20230627 增加强制登录插件 增加QQ微信防红插件 增加首页弹窗插件 增加鱼儿游背景特效插件 官方微信支付插件增加jsapi类型 后台订单列表增加下单必填项字段显示 修复分站个人中心开通分站报错的问题 修复提…