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

【三层架构有哪些?】

除了 MVC、MVP、MVVM,常见的三层架构(或类似分层架构)还包括以下模式:


1. PAC(Presentation-Abstraction-Control)

组成元素

职责
Presentation用户界面(类似 View)
Abstraction业务逻辑和数据(类似 Model)
Control协调 Presentation 和 Abstraction(类似 Controller)

架构思想

  • 适用于复杂交互系统(如航空管制、工业控制)。
  • 强调模块化,每个 PAC 单元可递归嵌套(类似微前端)。
  • 比 MVC 更松耦合,适合分布式系统。

适用场景

  • 大型工业软件
  • 分布式 UI 系统

2. MVI(Model-View-Intent)

组成元素

职责
Model不可变数据状态(类似 Redux 的 Store)
View渲染 UI(如 React/Vue 组件)
Intent用户意图(如点击事件 → 触发状态更新)

架构思想

  • 单向数据流(类似 Flux/Redux)。
  • 状态不可变,所有变化通过新 Model 触发。
  • 适合函数式编程(如 React + Redux)。

适用场景

  • 前端状态管理(Redux、MobX)
  • 响应式 UI(如 Jetpack Compose、Flutter)

3. RMR(Resource-Method-Representation)

组成元素

职责
Resource数据实体(类似 Model)
Method操作(如 HTTP 方法 GET/POST)
Representation数据表现形式(如 JSON/XML)

架构思想

  • RESTful API 设计模式,强调资源化。
  • 无状态,依赖 HTTP 语义。
  • 类似 MVC,但更轻量,适用于 API 服务。

适用场景

  • RESTful 后端(如 Express.js、Spring Boot)
  • 微服务架构

4. Flux(Facebook 提出的架构)

组成元素

职责
View用户界面(React 组件)
Action用户行为(如按钮点击)
Dispatcher事件调度中心
Store数据状态(类似 Model)

架构思想

  • 严格单向数据流(View → Action → Dispatcher → Store → View)。
  • 适合复杂前端状态管理(如 Redux 的基础)。

适用场景

  • 大型前端应用(如 Facebook、Instagram)
  • 需要严格状态管理的场景

5. Clean Architecture(洋葱架构)

组成元素

职责
Entities核心业务对象(如 User、Order)
Use Cases业务逻辑(类似 Service 层)
Interface Adapters转换层(如 Controller、Presenter)
Frameworks & Drivers基础设施(如数据库、UI)

架构思想

  • 依赖反转(内层不依赖外层)。
  • 适合大型企业应用(如 DDD 领域驱动设计)。

适用场景

  • 复杂后端系统(如银行、电商)
  • 需要长期维护的项目

6. VIPER(iOS 架构)

组成元素

职责
ViewUI 展示
Interactor业务逻辑(类似 Model)
Presenter协调 View 和 Interactor
Entity数据对象
Router导航逻辑

架构思想

  • 比 MVC/MVVM 更细粒度,适合大型 iOS 项目。
  • 高可测试性(每层可单独测试)。

适用场景

  • 复杂 iOS/macOS 应用

总结:不同三层架构对比

架构核心思想适用场景典型框架/技术
MVC分层解耦传统 Web、GUISpring、Rails
MVPView 被动,Presenter 主导高可测试性Android、.NET
MVVM数据绑定现代前端Vue、React、WPF
PAC模块化嵌套工业软件分布式 UI
MVI单向数据流前端状态管理Redux、Compose
RMRRESTful 资源化API 服务Express、Spring Boot
Flux严格单向流复杂前端Redux
Clean Architecture依赖反转企业级后端DDD 项目
VIPER细粒度分层iOS 大型应用Swift

如何选择?

  • 简单 UIMVC/MVVM
  • 复杂状态管理Flux/MVI
  • API 服务RMR
  • 企业级后端Clean Architecture
  • iOS 大型项目VIPER

这些架构并非互斥,实际开发中可能混合使用(如 React + Redux ≈ MVI + Flux)。理解核心思想比死记硬背更重要。

http://www.dtcms.com/a/107597.html

相关文章:

  • 函数fcntl(File Control)
  • spring AOP 事务 过滤器(Filter)与拦截器(Interceptor)
  • java项目分享-分布式电商项目附软件链接
  • C语言变长数组(VLA)详解:灵活处理动态数据的利器
  • 【大模型系列篇】大模型基建工程:使用 FastAPI 构建 MCP 服务器
  • 智能语音识别工具开发手记
  • Java 枚举类 Key-Value 映射的几种实现方式及最佳实践
  • 【Framework-Client系列】UIGenerate介绍
  • MTK AWB 色温曲线的进一步猜想
  • 时尚优雅奢华品牌包装徽标设计衬线英文字体安装包 Kagea – Luxury Women Ligature Font
  • 司南评测集社区 3 月上新一览!
  • 启服云商标管理软件:律师事务所的高效之选
  • 数据结构优化DP总结
  • SvelteKit 最新中文文档教程(17)—— 仅服务端模块和快照
  • 智能配电箱:重塑未来电力管理的核心枢纽
  • 大模型显卡网络
  • 爱普生RX8901CE实时时钟模块赋能智能监控系统的精准
  • 某某航空 同盾 blackbox 补环境
  • 华为云数据库服务实践
  • 如何解决跨系统审批慢、人工干预多的问题?
  • es自定义ik分词器中文词库实现热更新
  • Elasticsearch 证书问题解决
  • 基于pycharm的YOLOv11模型训练方法
  • mac 最新的chrome版本配置selenium的方式
  • React 文件上传新玩法:Aliyun OSS 加持的智能上传组件
  • d202542
  • 架构师面试(二十五):分布式存储 Leader 设计
  • 元素定位-cssSelector
  • SSM框架学习(Day-1)
  • Kubernetes 入门篇之 Node 安装与部署