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

2023-11-02

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会自动变化

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • JMeter websocket接口测试

    前言 在一个网站中 很多数据需要即时更新 比如期货交易类的用户资产 在以前 这种功能的实现一般使用http轮询 即客户端用定时任务每隔一段时间向服务器发送查询请求来获取最新值 这种方式的弊端显而易见 有可能造成数据更新不及时 如果前端轮询频
  • 黑马程序员----职工管理系统(c++)

    目录 一 项目概要 二 代码 三 演示效果 四 项目注意点 五 一点点感悟 一 项目概要 1 面向角色 普通员工 经理和老板 2 主要功能 增加员工信息 显示员工信息 删除离职员工信息 修改员工信息 查找员工信息 按照编号排序 清空所有文档
  • PVE虚拟化平台之创建虚拟机流程

    PVE虚拟化平台之创建虚拟机流程 一 PVE介绍今天 2022 年 11 月 17 日 有236篇文章可用 二 登录PVE平台 三 登录PVE系统检查环境 1 进入PVE底层系统的shell命令终端 2 检查系统版本 3 检查本地磁盘存储
  • SQLMAP中文翻译详细解读

    H 1 5 5 stable V http sqlmap org 使用示例 python3 sqlmap 选项 选项 h help 显示基础帮助信息然后退出 hh 显示更详细的帮助信息然后退出 version 显示程序版本号然后退出 v V
  • JavaScript:异步编程

    异步编程是一种编程模式 JavaScript 是单线程的 只有一个线程可以执行代码 这意味着 所有代码都只能在一个线程中按顺序执行 这很容易导致代码执行的阻塞 代码的每一个语句都需要被执行 为了完成某个计算任务需要一定的执行时间 不同任务的
  • js判断设备是PC端还是移动端

    方法一 function IsPC var userAgentInfo navigator userAgent var Agents Android iPhone SymbianOS Windows Phone iPad iPod var
  • 你知道C语言中的C是怎么来的吗?

    为什么是C C语言中的C怎么来的 各位 我们天天讲C语言 学C语言 那你知道C语言中的C是怎么来的吗 今天我们就给大家简单讲一下 其实这也要从C语言的发展史或者由来说起了 让我们先来看个小视频吧 海风教育退费 海风教育在线辅导0元一对一试听
  • 计算一个3位数各个位数之和

    1 输入一个三位数 n input 输入一个三位数 将这个三位数转换为整型 n int n 2 先除以一百得出百位数 b100 n 100 3 取余一百除以十得出十位数 b10 n 10 10 4 取余十得出个位数 b1 n 10 5 求和
  • Python使用smtplib库,实现自动发送邮件源码demo

    发送多种类型的邮件 import smtplib from email mime text import MIMEText 发送多种类型的邮件 from email mime multipart import MIMEMultipart m
  • mysql不用窗口函数,后面加一列序号

    前言 在后端开发中最常用的数据库还是比较稳定的5 8 而窗口函数是只有在mysql8以上才有的 然后在开发中有个需要排序序号的需求 翻找资料 问AI得出结论可以实现 列出方法 如果你使用的是MySQL 5 7版本 而没有窗口函数的功能 你仍
  • 数据结构作业3

    问题 S 算法2 25 有序单链表删除重复元素 附加代码模式 内存限制 128 MB时间限制 1 000 S 评测方式 文本比较命题人 2011014323 提交 3365解决 1604 返回比赛提交提交记录侧边提交 题目描述 根据一个递增
  • 如何开发一个音视频播放器(ffmpeg3.2+sdl2.0)

    如何开发一个音视频播放器 ffmpeg3 2 SDL2 0 前言 创建一个音视频播放器的步骤 一 播放音频 二 播放视频 三 音视频同步 源码分析 一 正式开始前的准备工作 二 配置音视频基本参数 获取文件基本信息 初始化音频参数 初始化视
  • 【深入浅出深度学习】3、线性代数基础

    一 标量 向量 矩阵 张量 标量 scalar 一个数值 最小的计算单元 向量 vector 由多个标量组成的一维数组 矩阵 matrix 由标量数据构成的二维数组 张量 tensor 深度学习领域 很多时候数据都是高于二维的 所以需要一种
  • sqli-labs————Less-26(绕空格、/*、#等)

    Less 26 从这里的提示 我们可以看出这一关过滤了空格 我们可以查看源代码 看看它的过滤机制 function blacklist id id preg replace or i id strip out OR non case sen
  • html,实现心动的表白代码

    今天看到多年年前的大佬写的 js表白代码 觉得不错 分析给大家 代码在这宫里 Love
  • python---------xpath提取数据------打破局限

    作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 qin laoda Gitee com 目录 为什么要学习XPATH和LXML类库 什么是XPATH 认识XML XML的节点关系 常 节点选择 具 节点选择语法 节点修饰语法 选择未知
  • ThinkPHP5之多语言切换

    T和inkPHP5的多语言切换是个人比较欣赏的一点 真是佩服设计者 怎么想到多语言切换的 在实际开发过程中 往往不是单一语言的项目 涉及多语言的使用 这时需要多语言切换 关键函数 Lang setAllowLangList 多语言的切换函数
  • 游戏开发unity UGUI知识系列:计算单行文本的宽度

    在Text使用了ContentSizeFitter情况下 对text设置新的字符串后 如果我们想要在当前帧获取宽度时 通过RectTransform sizeDelta x获取的宽度经常是旧字符串时的长度 所以需要自行计算改变文本后text
  • 虚拟机VMware的下载与安装——详细教程

    学习Linux过程中少不了要使用Linux系统 但是有的新手连 Windows 的安装都不太熟悉 更别提 Linux 的安装了 即使安装成功了 也有可能破坏现有的 Windows 系统 比如导致硬盘数据丢失 Windows 无法开机等 所以
  • 【Android】MVC,MVP,MVVM三种架构模式的区别

    MVC 传统的代码架构模式 仅仅是对代码进行了分层 其中的C代表Controller 控制的意思 将代码划分为数据层 视图层 控制层 三层之间可以任意交互 MVP MVP是在MVC基础上改进而来的一种架构 其中的P代表Presenter 主