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之间没有提供紧密的耦合
    • 当具有复杂的数据绑定时,调试过程将很复杂。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值