首页 > 其他分享 >MVC、MVP、MVVM ?

MVC、MVP、MVVM ?

时间:2023-04-05 16:00:51浏览次数:391  
标签:MVP MVVM 视图 MVC Model View

MVC、MVP、MVVM这些模式是为了解决开发过程中的实际问题而提出来的,目前作为主流的几种架构模式而被广泛使用。

MVC、MVP、MVVM 三者特点

  1. MVC(同步通信为主) :Model、View、Controller
  2. MVP(异步通信为主) :Model、View、Presenter
  3. MVVM(异步通信为主):Model、View、ViewModel

什么是MVC 模式?

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

  1. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
  2. View(视图) - 视图代表模型包含的数据的可视化。
  3. Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。
    MVC是比较直观的架构模式,用户操作->View(负责接收用户的输入操作)->Controller(业务逻辑处理)->Model(数据持久化)->View(将结果反馈给View)。

什么是MVP模式?

MVP 全称是Model - View - Presenter ,是模型(model)-视图(view)-呈现器(presenter)的缩写。

MVP是把MVC中的Controller换成了Presenter(呈现),目的就是为了完全切断View跟Model之间的联系,由Presenter充当桥梁,做到View-Model之间通信的完全隔离。

  1. Model:业务逻辑和数据处理(数据库存储操作,网络数据请求,复杂算法,耗时操作)。
  2. View : 对应于Activity,负责View的绘制以及与用户交互。
  3. Presenter:负责完成View于Model间的交互 (有一点还需要注意,presenter是双向绑定的关系,因此,在设计的时候就要注意接口和抽象的使用,尽可能的降低代码的耦合度,这也是mvp的宗旨)。

 

什么是MVVM模式?

MVVM(Model-View-ViewModel)是一种软件设计模式,由微软WPF(用于替代WinForm,以前就是用这个技术开发桌面应用程序的)和Silverlight(类似于Java Applet,简单点说就是在浏览器上运行WPF)的架构师Ken Cooper和Ted Peters开发,是一种简化用户界面的事件驱动编程方式。由John Gossman(同样也是WPF和Sliverlight的架构师)与2005年在他的博客上发表。

MVVM源自于经典的MVC(Model-View-Controller)模式。MVVM的核心是ViewModel层,负责转换Model中的数据对象来让数据变得更容易管理和使用。

如果说MVP是对MVC的进一步改进,那么MVVM则是思想的完全变革。它是将“数据模型数据双向绑定”的思想作为核心,因此在View和Model之间没有联系,通过ViewModel进行交互,而且Model和ViewModel之间的交互是双向的,因此视图的数据的变化会同时修改数据源,而数据源数据的变化也会立即反应到View上。

 

 

 

MVVM已经相当成熟了,主要运用但不仅仅在网络应用程序开发中。当下流行的MVVM框架有Vue.jsAnfular JS

为什么要使用MVVM?

MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大好处

  1. 低耦合:视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变, 当Model变化的时候View也可以不变。
  2. 可复用:你可以把一些视图逻辑放在一个ViewModel里面,让很多View重用这段视图逻辑。
  3. 独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewMode),设计人员可以专注于页面设计。
  4. 可测试:界面素来是比较难以测试的,而现在测试可以针对ViewModel来写

标签:MVP,MVVM,视图,MVC,Model,View
From: https://www.cnblogs.com/fulaien/p/17289600.html

相关文章

  • Spring MVC指南
    @RestControllerItisaconveniencesyntaxfor@Controllerand@ResponseBodytogether,Thisindicatesthattheclassisacontroller,andthatallthemethodsinthemarkedclasswillreturnaJSONresponse.@ResponseBodyThe@ResponseBodyisautilityanno......
  • 一个简单SpringMVC的实现
    之前学习时候,是使用老师的自定义的一个SpringMVC模式,今天突然好奇,官方的SpringMVC架构咋弄,于是带着好奇的心去实现完成它其实这个模式也比较简单1:首先,我们创建一个maven,web的网页项目,JDK选择1.8版本   2:在创建完之后,鼠标右键点击main目录,同时选择java和resource包按回车......
  • Spring——spring MVC源码分析与实战
    摘要SpringWebMVC是基于ServletAPI构建的原始Web框架,基于servlet3.0的规范实现的web框架。springmvc主要实现请求的接受,请求解析,请求响应等步骤。本文将详细的介绍springMVC的源码和springMVC的启动流程与相关原理。一、传统springMVC执行流程用户发送请求至前端控制器Dispa......
  • MVC4向后台传输数据(POST)
    前端constxhr=newXMLHttpRequest()constfileName='小题分表.xls'xhr.open('post','@Url.Action("ExportData")',true)xhr.responseType='blob'......
  • 如何进行SpringMVC异步编程
    前言SpringMVC是我们平时用的最多的异步编程框架,但是我们在使用的时候基本上只是用到了它的同步编程。一般情况下是够用的,但是在并发量比较大的时候可能就不会够用了,因为一个请求会占用一个tomcat线程,这个时候我们可以尝试使用异步编程的方式来提高吞吐量。环境准备maven依赖:......
  • 如何理解MySQL的MVCC多版本并发控制
    前言我们知道在mysql中存在四种隔离级别(读未提交、读已提交、可重复读、序列化),它默认的就是隔离级别就是可重复读,它能够解决脏读、不可重复读问题,并且在innodb引擎下能部分解决幻读问题。在mysqlinnodb存储引擎下RC(读已提交),RR(可重复读)基于MVCC(多版本并发控制)进行并发事务控......
  • Quarkus系列—— RESTEasy与SpringMVC(二)
    简述RestEasy在Quarkus中的作用跟SpringMVC在SpringBoot中类似。简介RESTEasy是JBoss的一个开源项目,提供各种框架帮助你构建RESTfulWebServices和RESTfulJava应用程序。我们以第一部分的代码为例来介绍如何通过RESTEasy的各种注解来开发Web应用,因为RESTEasy实现了JAX......
  • asp.net mvc5 与图片
    【第一种方式】 HttpPostedFileBasefile1、前端POST方式提交表单@using(Html.BeginForm("Upload","Test",FormMethod.Post,new{enctype="multipart/form-data"})){<inputtype="file"name=......
  • ASP.NET Core MVC 请求处理管道原理
     ASP.NETCoreMVC和RazorPages应用的完整请求处理管道   Endpoint包含 MVC和RazorPages ......
  • SpringMVC大文件上传解决方案支持分片断点上传
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传  可以带参数        [HttpPost("upload")]        publicJsonResultuploadProject(I......