【Android】MVC,MVP,MVVM三种架构模式的区别

MVC

在这里插入图片描述
传统的代码架构模式,仅仅是对代码进行了分层,其中的C代表Controller,控制的意思

将代码划分为数据层,视图层,控制层,三层之间可以任意交互

MVP

在这里插入图片描述
MVP是在MVC基础上改进而来的一种架构,其中的P代表Presenter,主持的意思

它主要在以下两方面进行了改进:解耦,接口化

MVP架构规定,Model层和View层不能直接通信,要通过Presenter层进行调度,这样就实现了Model层和View层的解耦

同时,MVP架构还规定,Model层、View层、Presenter层必须通过接口进行交互,这样就明确了每层的功能定位

MVVM

在这里插入图片描述
MVVM是一个比较新的架构模式,其中的VM代表ViewModel,视图模型的意思

单从调用关系来说,MVVM和MVP看起来是完全一样的,但它们是两种完全不同的编程风格

MVP是接口化编程风格,而MVVM是响应式编程风格,它们是两种不同的东西,适合各自的场景,并不是好与坏,谁取代谁的关系

ViewModel中存放了与View相对应的数据,它们是相互绑定的

当View发生变化时,ViewModel中的值会自动同步,当ViewModel值被修改时,View会自动变化

这就是所谓的响应式编程,控件和数据都是可观察的,其中一方变化,另一方会自动收到通知

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

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

相关文章

【深度学习注意力机制系列】—— CBAM注意力机制(附pytorch实现)

CBAM(Convolutional Block Attention Module)是一种用于增强卷积神经网络(CNN)性能的注意力机制模块。它由Sanghyun Woo等人在2018年的论文[1807.06521] CBAM: Convolutional Block Attention Module (arxiv.org)中提出。CBAM的主…

接口自动化测试框架及接口测试自动化主要知识点

接口自动化测试框架: 接口测试框架:使用最流行的Requests进行接口测试接口请求构造:常见的GET/POST/PUT/HEAD等HTTP请求构造 接口测试断言:状态码、返回内容等断言JSON/XML请求:发送json\xml请求JSON/XML响应断言&…

数据结构:各种结构函数参数辨析

(一)顺序表 1)结构 typedef int SLDateType;typedef struct SeqList {SLDateType* data;int size;int capacity; }SeqList;SeqList ps { 0 }; 2)函数参数 // 对数据的管理:增删查改 void SeqListInit(SeqList* ps); void Seq…

Linux系统目录结构介绍

Linux系统目录结构介绍 一、目录结构 Linux系统的目录结构是一颗倒状树: “/”表示最顶层的目录,叫做根目录。 (1)pwd可以显示当前所在的目录。 (2)cd可以切换当前的目录,例如,…

【Linux】TCP协议——传输层

目录 TCP协议 谈谈可靠性 TCP协议格式 序号与确认序号 窗口大小 六个标志位 确认应答机制(ACK) 超时重传机制 连接管理机制 三次握手 四次挥手 流量控制 滑动窗口 拥塞控制 延迟应答 捎带应答 面向字节流 粘包问题 TCP异常情况 TC…

【文献阅读笔记】深度异常检测模型

文章目录 导读相关关键词及其英文描述记录深度异常检测模型Supervised deep anomaly detection 有监督深度异常检测Semi-Supervised deep anomaly detection 半监督深度异常检测Hybrid deep anomaly detection 混合深度异常检测One-class neural network for anomaly detection…

心跳跟随的心形灯(STM32(HAL)+WS2812+MAX30102)

文章目录 前言介绍系统框架原项目地址本项目开发开源地址硬件PCB软件功能 详细内容硬件外壳制作WS2812级联及控制MAX30102血氧传感器0.96OLEDFreeRTOS 效果视频总结 前言 在好几年前,我好像就看到了焊武帝 jiripraus在纪念结婚五周年时,制作的一个心跳跟…

Android进阶之SeekBar动态显示进度

SeekBar 在开发中并不陌生,默认的SeekBar是不显示进度的,当然用吐司或者文案在旁边实时显示也是可以的,那能不能移动的时候才显示,默认不显示呢,当然网上花哨的三方工具类太多了,但是我只是单纯的想在SeekBar的基础上去添加一个可以跟随移动显示的气泡而…

Python爬虫在电商数据挖掘中的应用

作为一名长期扎根在爬虫行业的专业的技术员,我今天要和大家分享一些有关Python爬虫在电商数据挖掘中的应用与案例分析。在如今数字化的时代,电商数据蕴含着丰富的信息,通过使用爬虫技术,我们可以轻松获取电商网站上的产品信息、用…

在WebStorm中通过live-server插件搭建Ajax运行环境

1.下载node.js 官网: https://nodejs.cn/download/ 2.配置Node.js的HTTPS 使用淘宝的镜像: npm config set registry https://registry.npm.taobao.org 也可以使用cnpm npm install -g cnpm --registryhttps://registry.npm.taobao.org 配置之后可以验证是否成…

http相关知识点

文章目录 长链接http周边会话保持方案1方案2 基本工具postmanFiddlerFiddler的原理 长链接 一张网页实际上可能会有多种元素组成,这也就说明了网页需要多次的http请求。可由于http是基于TCP的,而TCP创建链接是有代价的,因此频繁的创建链接会…

中国信息安全测评中心CISP家族认证一览

随着国家对网络安全的重视,中国信息安全测评中心根据国家政策、未来趋势、重点内容陆续增添了很多CISP细分认证。 今日份详细介绍,部分CISP及其子品牌相关认证内容,一定要收藏哟! 校园版CISP NISP国家信息安全水平考试&#xff…