当前位置: 首页 > news >正文

Android MVC, MVP, MVVM, MVI 架构

MVC 架构

MVC 架构主要分为以下几个部分:

  • Model层:主要负责网络请求,数据库处理,I/O的操作,即页面的数据来源
  • View层: 对于xml布局文件和java代码动态view部分
  • Controller层: 主要负责业务逻辑,在android中由Activity承担

请求的流程:

  • View接受用户的交互请求。
  • View将请求转交给Controller。
  • Controller操作Model进行数据更新。
  • 数据更新之后,Model通知View数据变化。
  • View显示更新之后的数据。

存在问题:

  1. Activity 同时负责管理 View 层与 Cnntroller 层的工作,会使Controller层变得臃肿
  2. View 与 Model 之间存在依赖关系,相互耦合不利于开发和维护

MVP 架构

MVP的构成:

  • View层:对应于ActivityXML,只负责显示UI,只与Presenter层交互,与Model层没有耦合
  • Presenter层: 主要负责处理业务逻辑,通过接口回调View层,避免Activity的臃肿
  • Model层:主要负责网络请求,数据库处理等操作,这个没有什么变化

流程:

  • View 接收用户交互请求
  • View 将请求转交给 Presenter(V调用P接口)
  • Presenter 操作Model进行数据更新(P调用M接口)
  • Model 通知Presenter数据发生变化(M调用P接口)
  • Presenter 更新View数据(P执行接口,V相应回调)

相较于MVC:

  • 在MVP中,Activity的代码不臃肿;
  • 解耦。Model层与View层完全分离,修改V层不会影响M层,降低了耦合性。
  • Presenter层与View层的交互是通过接口来进行的,便于单元测试。
  • 可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。

仍然存在的缺点:

  • 双向依赖:View 和 Presenter 是双向依赖的,一旦 View 层做出改变,相应地 Presenter 也需要做出调整。在业务语境下,View 层变化是大概率事件;
  • 随着业务逻辑的增加,一个页面可能会非常复杂,这样就会造成View的接口会很庞大。

MVVM 架构

MVVM模式将Presenter改名为ViewModel,基本上与MVP模式完全一致。
唯一的区别是,它采用双向数据绑定(data-binding):View的变动,自动反映在ViewModel,反之亦然

同时将代码划分为三个部分:

  • View:Activity 和 Layout XML 文件,与 MVP 中 View 的概念相同;
  • Model:负责管理业务数据逻辑,如网络请求、数据库处理,与 MVP 中 Model 的概念相同;
  • ViewModel:存储视图状态,负责处理表现逻辑,并将数据设置给可观察数据容器。

流程:

  • View 接收用户交互请求
  • View 将请求转交给ViewModel
  • ViewModel 操作Model数据更新
  • Model 更新完数据,通知ViewModel数据发生变化
  • ViewModel 更新View数据

MVI 架构

MVIMVVM很相似,其借鉴了前端框架的思想,更加强调数据的单向流动和唯一数据源。

![[Pasted image 20260424011110.png]]

分为三个部分:

  • Model: 与MVVM中的Model不同的是,MVIModel主要指UI状态(State)。例如页面加载状态、控件位置等都是一种UI状态
  • View: 与其他MVX中的View一致,可能是一个Activity或者任意UI承载单元。MVI中的View通过订阅Model的变化实现界面刷新
  • Intent: 此Intent不是ActivityIntent,用户的任何操作都被包装成Intent后发送给Model层进行数据请求

MVI强调数据的单向流动,主要分为以下几步:

  • 用户操作以Intent的形式通知Model

  • Model基于Intent更新State

  • View接收到State变化刷新UI。

    ![[Pasted image 20260424011212.png]]


参考资料:
Android 架构模式如何选择Android架构模式飞速演进,目前已经有MVC、MVP、MVVM、MVI。这篇文章就针 - 掘金

MVVM 进阶版:MVI 架构了解一下~MVVM架构被官方推荐,成为Android开发中的主流架构。不过软件开发中没有银 - 掘金

http://www.jsqmd.com/news/1301578/

相关文章:

  • AAV靶向心脏选型全攻略:HFpEF新靶点Sub1机制深度解析
  • SwitchBot新款循环扇:续航、风速升级,无需额外设备接入智能家居!
  • 终极Windows和Office激活解决方案:KMS智能激活完全指南
  • AI处理网络请求必须绕开的4类安全雷区(OWASP AI Top 5深度映射),2024最新攻防验证报告
  • 2026北京卖包不踩坑|奢侈品实体回收门店实测 - 一日一测评
  • 多微网低碳调度:碳流追踪与NSGA-II优化实践
  • 开题报告不用硬熬✨一个OKBIYE搞定从零到一全流程
  • RTOS-F429-HAL-任务状态查询API实验(2026/7/30)
  • DLSS Swapper终极指南:3步掌握游戏DLSS版本切换技巧
  • 从HBM4量产出货谈谈一块垂直堆叠的内存为何会卡住整个AI产业的脖子
  • 破解敏感肌反复难题:减少敏感反复的修护精华OEM如何实现长期维稳? - 汇聚至此
  • 美格推 Zero 系列台式电脑:4 毫米弧形钢化玻璃外观,起售价 2699 美元
  • DC-DC转换器自举电容:原理、计算与PCB布局实战
  • GetQzonehistory:Python技术栈下的QQ空间历史数据完整备份解决方案
  • 今天不看,明天就被淘汰:2024 Q2 AI搜索产品能力断层已形成——Top3与其余4家在长文档推理、跨源归因、模糊意图纠错上差距超4.8倍(附实测视频链接)
  • 内卷叙事与系统性焦虑:现代社会以焦虑完成秩序调控
  • RTOS-F429-HAL-绝对延时和相对延时(2026/7/31)
  • 从视频中智能提取PPT:如何用计算机视觉技术将视频内容转化为可编辑文档
  • 早晚都可用的修护精华OEM推荐:从核心定义到实践路径的深度解析 - 汇聚至此
  • 如何5分钟掌握YimMenu:GTA5最强防崩溃菜单完整指南
  • 30分钟从零搭建AI Agent:LangChain实战指南与核心原理
  • 杭州银行与品牌金店黄金回收模式全面对比参考 - 日常比对手册
  • 字节跳动发布 Seedance 2.5,视频生成模型从创意工具走向产业生产力
  • 2026 年沈阳值得关注的财税代办服务机构盘点:辽宁省信誉分第一的头部财税公司深度盘点 - 财税推荐官
  • GoldHEN Cheats Manager终极指南:1490+款PS4游戏修改神器免费使用教程
  • 【AI工具产品化黄金公式】:如何用1个Prompt+1套API+1页落地页,3周冷启动获客5000+
  • Python并发爬虫实战:多线程与多进程架构设计与性能优化
  • 【编译链接】
  • Win11Debloat:3分钟让你的Windows系统焕然一新的终极优化工具
  • 佛山市民速看!2026 黄金回收诚信名单出炉,多家合规门店公示,卖金认准三证一价安心变现 - 好物测评局