找人做一个网站多少钱,网站建设企业哪里好,wordpress应用,越秀金融大厦地址✅作者简介#xff1a;大家好#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式#xff0c;持续分享Java技术内容。 #x1f34e;个人主页#xff1a;Meteors.的博客 #x1f49e;当前专栏#xff1a; ✨特色专栏#xff1a; 知识分享 #x1f96d;本… ✅作者简介大家好我是 Meteors., 向往着更加简洁高效的代码写法与编程方式持续分享Java技术内容。 个人主页Meteors.的博客 当前专栏 ✨特色专栏 知识分享 本文内容 MVC、MVP、MVCC 和 MVI 架构的介绍及区别对比 ** ps ** 阅读文章如果有问题或者疑惑欢迎在评论区提问或指出。 目录
一、背景
1. MVCModel-View-Controller
核心思想
特点
问题
2. MVPModel-View-Presenter
核心思想
特点
变体
问题
3. MVCCModel-View-Controller-Components
核心思想
特点
与MVC区别
4. MVIModel-View-Intent
核心思想
特点
关键概念
二、架构对比表
三、如何选择
四、趋势 一、背景
初入安卓开发便遇到的以前做后端从未见过的设计模式。MVI?MVI是什么.....于是在网上扑腾资料逐渐学习了多种架构模式。MVC、MVP、MVCC 和 MVI 是软件设计和架构中常见的模式或概念各自适用于不同的场景。 1. MVCModel-View-Controller 核心思想 Model数据逻辑和业务规则独立于UI。 View用户界面展示被动反映Model状态。 Controller接收用户输入协调Model和View的更新。 特点 View直接依赖ModelModel变化时直接通知View如观察者模式。 Controller职责模糊在复杂场景中可能成为“上帝类”。 典型应用传统Web框架如Spring MVC、早期iOS开发。 问题 紧耦合View和Model直接交互难以测试。 Controller膨胀业务逻辑易堆积在Controller中。 2. MVPModel-View-Presenter 核心思想 Model与MVC相同处理数据逻辑。 View被动界面通过接口与Presenter交互。 Presenter取代Controller作为中间人处理业务逻辑解耦View和Model。 特点 View与Model完全隔离所有交互通过Presenter。 测试友好Presenter可脱离View进行单元测试。 典型应用Android开发如Google官方早期示例、WinForms。 变体 Passive ViewView极简所有逻辑在Presenter。 Supervising ControllerView可处理简单逻辑。 问题 手动同步需显式更新View代码量可能增加。 Presenter可能过重复杂场景下仍需拆分。 3. MVCCModel-View-Controller-Components 核心思想 扩展MVC引入Components可复用的UI组件每个组件有自己的MVC三角。 分层协作父Controller协调子Components。 特点 模块化适合大型应用如ERP系统。 典型应用后端复杂UI系统如JavaServer Faces。 与MVC区别 组件化UI拆分为独立功能单元降低耦合。 层级化父子Controller/Component的协作关系。 4. MVIModel-View-Intent 核心思想 单向数据流用户输入Intent→ Model更新 → View渲染。 不可变Model状态不可变每次更新生成新Model。 响应式编程基于RxJava或Kotlin Flow实现数据流。 特点 状态集中管理所有状态变化可预测、易调试。 适合复杂交互如实时数据更新股票应用、聊天软件。 典型应用现代Android开发Jetpack Compose、前端ReactRedux。 关键概念 Intent用户动作的抽象表示如按钮点击→LoadDataIntent。 状态机View仅反映当前Model状态。 二、架构对比表 特性 MVC MVP MVCC MVI 核心目标 基础分离关注点 解耦View与Model 组件化复用 单向数据流状态管理 数据流向 双向View↔Model 双向通过Presenter 层级化双向 严格单向Intent→Model→View 测试难度 较难View耦合 较易Presenter可测 中等组件依赖 易状态可追踪 适用场景 简单Web/iOS应用 传统Android应用 企业级后端UI 现代响应式应用 典型框架 Spring MVC, Django Android Architecture JSF, ASP.NET Jetpack Compose, Redux 三、如何选择 快速开发简单应用MVC如博客网站。 需要高可测试性MVP遗留Android项目。 企业级复杂UIMVCC后台管理系统。 现代响应式UIMVI实时数据应用、移动端。 四、趋势 移动端MVP → MVVMData Binding → MVIJetpack Compose。 前端MVC → Flux/Redux类似MVI。 后端MVC → 分层架构DDDCQRS。 最后 希望文章对你有所帮助