首页 > 其他分享 >MVC和MVVM

MVC和MVVM

时间:2022-11-11 09:01:02浏览次数:71  
标签:MVVM 模型 视图 MVC Model View

MVC、MVVM模式的概念与区别

1. MVC框架

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

1.1 MVC 编程模式

MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:

  • Model(模型)表示应用程序核心(如数据库)。
  • View(视图)显示效果(HTML页面)。
  • Controller(控制器)处理输入(业务逻辑)。

MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
  通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
  通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
  通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

2.MVVM框架

MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。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的新特性糅合进去,以应对客户日益复杂的需求变化。

2.1 MVVM模式的组成部分

  • 模型
    模型是指代表真实状态内容的领域模型(面向对象),或指代表内容的数据访问层(以数据为中心)。
  • 视图
    就像在MVC和MVP模式中一样,视图是用户在屏幕上看到的结构、布局和外观(UI)。
  • 视图模型
    视图模型是暴露公共属性和命令的视图的抽象。MVVM没有MVC模式的控制器,也没有MVP模式的presenter,有的是一个绑定器。在视图模型中,绑定器在视图和数据绑定器之间进行通信。
  • 绑定器
    声明性数据和命令绑定隐含在MVVM模式中。在Microsoft解决方案堆中,绑定器是一种名为XAML的标记语言。绑定器使开发人员免于被迫编写样板式逻辑来同步视图模型和视图。在微软的堆之外实现时,声明性数据绑定技术的出现是实现该模式的一个关键因素。

3.MVVM框架与MVC框架的区别

mvc 和 mvvm 其实区别并不大。都是一种设计思想,主要区别如下:

  1. mvc 中 Controller演变成 mvvm 中的 viewModel

  2. mvvm 通过数据来驱动视图层的显示而不是节点操作。

  3. mvc中Model和View是可以直接打交道的,造成Model层和View层之间的耦合度高。而mvvm中Model和View不直接交互,而是通过中间桥梁ViewModel来同步

  4. mvvm主要解决了:mvc中大量的DOM 操作使页面渲染性能降低,加载速度变慢,影响用户体验

转载自MVC、MVVM模式的概念与区别

标签:MVVM,模型,视图,MVC,Model,View
From: https://www.cnblogs.com/zx529/p/16879487.html

相关文章

  • Spring MVC工作 执行流程详解
    SpringMVC执行流程用户点击某个请求路径,发起一个HTTPrequest请求,该请求会被提交到DispatcherServlet(前端控制器)由DispatcherServlet请求一个或多个HandlerMapping(......
  • MySQL-InnoDB的MVCC
     InnoDBMVCCInnoDB的MVCC,其实是通过undolog来实现的,可以理解为是通过在每行记录后面保存两个隐藏的列来实现的,分别保存了这个行的创建时间,一个保......
  • SpringMVC的单文件上传,多文件上传和下载文件(十二)
    你未看此花时,则此花与汝心同归于寂,你来看此花时,此花颜色一时明白起来,便知此花不在你的心外。上一章简单介绍了SpringMVC的数据验证和JSR303国际化显示(十一),如果没有看......
  • spring mvc 请求异步处理,即时响应
    springmvc的controller,对于一个非常耗时的处理,让controller先异步返回响应给前端,后台继续慢慢执行完。@RequestMapping(value="refreshScore.do",method=Reque......
  • SpringMVC概述
    1.SpringMVC是一种基于Java实现MVC模型的轻量级Web框架优点:使用简单,开发便捷(相比于Servlet)灵活性强2.SpringMVC是一种表现层框架技术,用于进行表现层功能开发3. Java......
  • springmvc 整合 camunda
    参考官网:ProcessEngine配置|docs.camunda.org 一POM注意:1低版本c3p0会报错:Methodcom/mchange/v2/c3p0/impl/NewProxyResultSet.isClosed()Z千万记得要删除Ta......
  • 自定义SpringMVC(仅用学习)
    自定义MVC有两大核心:1.AppListener程序一启动,监听器就会对程序进行监听,此时会去获取config从而找到controller路径(在使用web项目时,web.xml需要先配置config信息)、再通......
  • spring mvc @Configuration 无效问题
    spring版本:4.3.7addFormatters(FormatterRegistryregistry)不生效<!--此处与@EnableWebmvc冲突,配置此处后EnableWebmvc中的配置无效--><mvc:annotatio......
  • 一文看懂InnoDB mvcc,面试无忧
    1、mvcc是什么mvcc全称是MultiVersionConcurrencyControl,即多版本并发控制。InnoDB中mvcc的实现,是通过在undolog中维护一个数据的多个版本,然后根据隔离级别和用户读请求(......
  • Spring+SpringMVC学习笔记
    Spring学习笔记转载:https://www.yuque.com/kkuping/yuqzh2/vlgfylSpringMVC学习笔记转载:https://www.yuque.com/kkuping/yuqzh2/nxtocy......