首页 > 其他分享 >MVVM 与 MVC 的区别

MVVM 与 MVC 的区别

时间:2023-01-20 17:58:33浏览次数:37  
标签:MVVM 区别 模型 ViewModel 模式 MVC 视图

MVVM (Model-View-ViewModel) 和 MVC (Model-View-Controller) 都是软件架构模式,用于将应用程序的不同部分分离开来,更好地组织代码。

MVC 是一种模型-视图-控制器模式,其中模型表示应用程序的数据和业务逻辑,视图表示应用程序的用户界面,而控制器则负责在模型和视图之间传递信息。

MVVM 模型的本质上是MVC的变种,其中 ViewModel 是一个桥梁,负责在 View 和 Model 之间传递信息。ViewModel 负责处理与界面相关的逻辑,并将模型的数据转化成可供视图使用的形式。

主要区别就是在于,MVC 中的控制器负责在模型和视图之间传递信息,而 MVVM 中的 ViewModel 负责在 View 和 Model 之间传递信息。

MVVM 模式可以使得模型和视图之间的耦合更低,更易于维护和测试。

MVVM 模式还有一个重要的特点:双向数据绑定。这意味着,在 MVVM 模式中,当数据模型中的数据发生变化时,视图会自动更新,而当视图中的数据发生变化时,数据模型也会自动更新。这使得数据与视图之间的同步变得更加简单。

MVVM 模式通常与数据绑定库,如 Vue.js 和 AngularJS 一起使用,以实现双向数据绑定的功能。

还有一点需要注意的是,MVVM 模式与 MVC 模式的组件之间的关系更紧密。在 MVC 模式中,控制器负责在模型和视图之间传递信息。而在 MVVM 模式中,ViewModel 绑定到视图上,更直接的操作视图。

在 MVVM 中视图层和模型层的交互是通过数据绑定和命令绑定来实现的,而在 MVC 中则是通过控制器来实现的。

在 MVVM 模式中, ViewModel 更像是一个中间层,其不仅负责在 View 和 Model 之间传递信息,而且还负责处理界面相关的逻辑,如数据格式化、验证等。而在 MVC 模式中,控制器所承担的职责更加单一,主要是处理路由和视图的切换,而不是处理界面相关的逻辑。

还有就是,在 MVC 模式中,由于视图和模型之间的耦合度较高,所以视图的变化会直接影响到模型,而在 MVVM 模式中,由于 ViewModel 更加独立,所以视图的变化不会直接影响到模型,更加符合单向数据流的思想。

总之,MVVM 模式能够更好地支持大型应用程序的开发,使得程序更加易于维护和扩展,更加符合前端开发的需要。

标签:MVVM,区别,模型,ViewModel,模式,MVC,视图
From: https://www.cnblogs.com/yuzhihui/p/17062944.html

相关文章

  • SpringMVC
    第一个入门程序创建空maven项目,右键maven项目添加框架的支持,选web。这样可以保证web是最新版,如果不是,程序可能报错所需依赖<dependencies><dependency>......
  • 硬件中断和软件中断的区别【转】
    http://www.nynaeve.net/?p=80Debuggerflowcontrol:HardwarebreakpointsvssoftwarebreakpointsIndebuggingparlance,therearetwokindsofbreakpointsthat......
  • SpringMVC
    第一个入门程序创建空maven项目,右键maven项目添加框架的支持,选web。这样可以保证web是最新版,如果不是,程序可能报错所需依赖<dependencies>  <dependency>  ......
  • MVC三层架构
    什么是MVC:Model view Controller 模型,视图,控制器Model控制业务操作。保持数据,修改数据,删除数据,查询数据View1.展示数据模型2.提供用户操作Controller1.......
  • 学习笔记——springMVC中视图及视图解析器对象;视图控制器
    2023-01-20一、springMVC中视图及视图解析器对象1、视图解析器对象(ViewResolver)(1)概述:SpringMVC中所有视图解析器对象均实现ViewResolver接口(2)作用:使用ViewResolver,将Vi......
  • Servlet17 - mvc优化 - reflect
    mvc优化-reflect将所有Servlet方法放在一个FruitServlet中,通常项目会有许多Servlet方法,会导致FruitServlet非常庞大,判断operate参数的语法非常长,维护困难s......
  • Servlet16 - mvc优化
    mvc优化一个项目通常有许多xxServlet类,比如AddServlet、DelServlet、EditServlet、IndexServlet、UpdateServlet等等,这些类中实现的方法有许多相同的对象,相同的参数......
  • ASP.NET Core 实战-13.MVC 和 Razor Pages 过滤器管道
    了解过滤器以及何时使用它们在本节中,您将了解有关过滤器管道的所有信息。您将看到它在典型请求的生命周期中的位置、MVC和Razor页面之间的区别以及过滤器与中间件的区......
  • 学习笔记——SpringMVC处理响应数据;SpringMVC处理请求域响应乱码问题
    2023-01-20一、SpringMVC处理响应数据1、处理响应数据方式一(1)语法:使用ModelAndView对象作为返回值类型,处理响应数据(2)底层实现原理①数据共享到request域②跳转路径方......
  • 学习笔记——@PathVariable注解基本使用;@PathVariable注解属性;REST风格CRUD概述;实现PU
    2023-01-19一、@PathVariable注解基本使用1、获取URL中占位符2、占位符语法:{}3、实例代码:@RequestMapping("testPathVariable/{empId}")publicStringtestPath......