MVC与MVVM架构模式

1、MVC

MVC:Model-View-Controller,即模型-视图-控制器

MVC模式是一种非常经典的软件架构模式。从设计模式的角度来看,MVC模式是一种复合模式,它将多个设计模式结合在一种解决方案中,从而可以解决许多设计问题。

MVC模式将用户界面交互拆分到不同的三种角色中,使应用程序被分成三个核心部件:Model(模型)、View(视图)、Controller(控制器),每个核心部件都会各自处理自己的任务。

  1. 模型:数据来源,它是应用程序的主体部分。模型持有所有的业务数据和业务逻辑,并且独立于视图和控制器,当数据发生改变时,它要负责通知视图部分。一个模型能为多个视图提供数据。
  2. 视图:数据渲染(用户界面),它是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不做任何实际的业务处理。视图可以向模型查询业务状态,但不能改变模型。对于相同的信息可以有多个不同的显示形式或显示在多个视图中。
  3. 控制器:事件处理,它位于视图和模型之间,负责接收用户的输入,将输入进行解析并反馈给模型。通常一个视图对应一个控制器。例如,当Web用户单击Web页面中的提交按钮来发送HTML表单时,控制器接收请求并调用相应的模型组件去处理请求。

通信过程:

  1. 由用户在视图上做相关操作,发送请求
  2. 视图接收用户请求并调用控制器
  3. 控制器操作模型做数据更新
  4. 数据更新后,模型通知视图数据发生改变
  5. 视图将数据变化呈现给用户

MVC模式优点:

  • 一个模型提供多个视图表现形式,也能够为一个模型创建新的视图而无须重写模型。一旦模型的数据发生变化,模型将通知相关的视图,每个视图相应地刷新自己。
  • 因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。
  • 在开发界面显示部分时,开发人员仅仅需要考虑的是布局和样式;开发模型时,开发人员仅仅要考虑的是业务逻辑和数据维护,这样能使开发人员专注于某一方面的开发,提高开发效率。

2、MVVM

MVVM:Model-View-ViewModel,即模型-视图-模型视图

MVVM是一种基于MVC的设计,可以理解为将 Controller 替换为 ViewModel(模型视图),同时各部分之间的通信也与MVC有所区别

通信过程:

  1. 用户在视图上做相关操作,例如表单提交。
  2. 视图将请求转交给模型视图。
  3. 模型视图操作模型,数据更新。
  4. 模型处理数据后,通知模型视图数据发生改变。
  5. 模型视图更新视图数据。
  6. 视图将数据变化呈现给用户。

MVVM与MVC的区别:MVVM采用双向绑定(data-binding):视图的变动自动反映在模型视图中,反之亦然。在MVC中,视图是可以直接访问模型的,从而视图会包含模型信息,不可避免地还要包括一些业务逻辑。MVC模式关注的是模型的不变,所以在MVC模式中,模型不依赖于视图,但是视图是依赖于模型的。

MVVM在概念上是真正将页面与数据逻辑分离的模式,它把数据绑定工作放到一个JavaScript文件中去实现,而这个JavaScript文件的主要功能是完成数据的绑定,即把模型视图绑定到视图上。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++:类与对象—继承

类与对象—继承 一、继承是什么?二、继承定义三、基类和派生类对象赋值转换四、继承中的作用域五、派生类的默认成员函数六、继承与友元七、继承与静态成员八、复杂的菱形继承及菱形虚拟继承九、继承的总结和反思十、考察重点 一、继承是什么? 继承(inh…

威客网上招标系统(五)

目录 5 详细设计 5.1 系统首页 5.1.1系统首页(网站首页index.jsp) 5.1.2 下沙派威客网首页界面说明 5.2 站内新闻信息 5.2.1站内新闻操作界面 5.2.2系统主操作界面说明 5.3威客在线操作界面 5.3.1 威客在线操作界面 5.3.2威客在线说明 5.4系统…

ssrf初步

一,简介 全称:Server-Side Request Forgery(中文:服务器端请求伪造) 攻击者从服务端发起请求,让服务器连接任意外部系统,从而泄露敏感数据。主要利用各种协议的请求伪造,例如php协…

KMP + Compose 跨平台 Android IOS 实战入门

KMP(Kotlin Multiplatform)是一种面向移动端开发的跨平台框架,使用 Kotlin 语言编写,可实现在 Android 和 iOS 平台上共享代码和逻辑。通过 KMP 框架,我们可以编写一次代码,然后在不同的平台上进行部署和运…

20240430,类模板案例-数组类封装,STL初识,STRING容器(构造函数,赋值)

我真的碎掉了,主要是我很缺那点钱啊现在,我真的碎掉了我碎掉了碎掉了碎掉了 目录 0.8 类模板案例-数组类封装 myarray.hpp a.cpp 一,STL初识 1.1 STL基本概念 1.2 vector 存放内置数据 1.3 vector存放自定义数据(及指针类型&#xf…

Java中的异常处理机制

Java中的异常处理机制主要通过try、catch和finally三个关键字来实现。以下是Java异常处理机制的工作原理和正确处理异常的一些基本步骤: ## 异常处理机制的工作原理 1. **try**:包围可能抛出异常的代码块。 2. **catch**:捕获并处理特定类型…

CoroNa Green,可用于细胞内或细胞外环境中NA+浓度的测量

引言:在化学研究的海洋中,优质的化学试剂是实验成功的关键。今天,我要为大家分享一款备受好评的化学试剂——CoroNa Green。这款试剂以其独特的性能和广泛的应用领域,赢得了众多科研人员的青睐。 CoroNa Green是一种常用的钠离子荧…

OpenHarmony实战开发——引入开源C/C++库之Har包里的NDK

Har 包 HAR(Harmony Archive)是静态共享包,可以包含代码、C 库、资源和配置文件。通过 HAR 可以实现多个模块或多个工程共享 ArkUI 组件、资源等相关代码。HAR 不同于 HAP,不能独立安装运行在设备上,只能作为应用模块…

Clion STM32CubeMX 项目

系列文章目录 前言 最后修改 2024 年 4 月 16 日 操作系统:Windows / Linux / macOS 所需工具 STM32CubeMX、GNU ARM 工具链 项目格式: CMake 兼容配置: OpenOCD 运行与调试/嵌入式 GDB 服务器 对于以 STM32 板卡为目标的嵌入式项目&#xf…

联发科天玑AI开发套件亮相:开发智能终端生成式AI应用的全面工具

在今日召开的天玑开发者大会2024(MDDC 2024)上,联发科向外界展示了其最新力作——天玑AI开发套件。该套件是为合作伙伴提供终端生成式AI应用开发的一站式工具包,意在简化并加速开发过程。 联发科推出的天玑AI开发套件包括四大核心…

Unity数据持久化之Json

Json概述 Json是什么? 全称:JavaScript对象简谱(JavaScript Object Notation) Json是国际通用的一种轻量级的数据交换格式 主要在网络通讯中用于传输数据,或本地数据存储和读取 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率 我们一般使用Json文件来…

QTDay3

思维导图 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//窗口相关设置this->resize(540,415);this->setFixedSize(540,415);//窗口标题this->setWi…