三层架构 + MVP 到底怎么结合?如何体现?

三层架构 + MVP 到底怎么结合?如何体现?


一、先把两个概念彻底分开(非常关键)

1. 三层架构(UI-BLL-DAL)

目的:分离界面、业务、数据,解决"代码乱、难维护"

  • UI 层:界面、按钮、输入框
  • BLL 层:业务逻辑、验证、计算
  • DAL 层:数据库增删改查
  • Model:实体类(贯穿三层)

2. MVP(View-Presenter-Model)

目的:分离界面逻辑与界面渲染,解决"界面代码臃肿"

  • View:界面(只显示,不处理逻辑)
  • Presenter:逻辑处理中心
  • Model:数据/实体

二、核心结论(一句话)

MVP 是跑在 UI 层内部的架构,用来把 UI 层再拆干净!

三层架构是整体项目架构,MVP 是 UI 层的内部架构!

它们不是竞争关系,是嵌套关系


三、可视化图画:三层架构 + MVP 如何体现

🎨 终极整合图(最标准、最漂亮)

复制代码
┌─────────────────────────────────────────────────────┐
【  三  层  架  构  全  局  图  】
└─────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────┐
│                  UI 层 (最上层)                     │
│  ┌─────────────┐         ┌──────────────────────┐   │
│  │   View      │←-------→│      Presenter       │   │
│  │ (界面)    │   MVP   │ (UI逻辑处理中心)    │   │
│  └─────────────┘         └──────────┬───────────┘   │
└─────────────────────────────────────┼────────────────┘
                                      │
                                      ▼
┌─────────────────────────────────────────────────────┐
│                  BLL 层 (业务逻辑)                  │
│              业务验证、规则、组合逻辑                │
└─────────────────────────────────────┬────────────────┘
                                      │
                                      ▼
┌─────────────────────────────────────────────────────┐
│                  DAL 层 (数据访问)                  │
│                数据库、EF、SQL 操作                  │
└─────────────────────────────────────────────────────┘

                      ↑
                      │
               Model(实体类)贯穿所有层

四、深度说明:MVP 在三层里如何体现

1. View 只属于 UI 层

  • 只做界面显示
  • 不写业务逻辑
  • 不调用 BLL/DAL
  • 不访问数据库

体现:

View 是纯粹的界面,只暴露接口给 Presenter。


2. Presenter 是 UI 层的"大脑",但不属于界面

Presenter 完全独立于窗体,它:

  • 接收 View 的事件
  • 调用 BLL 层
  • 接收 BLL 返回的数据
  • 控制 View 显示

体现:

Presenter 是 UI 层与 BLL 层之间的桥梁


3. BLL、DAL 不变,还是标准三层

  • BLL:业务逻辑
  • DAL:数据访问
  • Model:实体

体现:

三层架构完全不受影响,MVP 只是让 UI 层更干净。


五、最清晰的调用链(必背!)

用户点击查询按钮 → 完整流程

复制代码
View(界面)
   ↓ 通知事件
Presenter(逻辑中心)
   ↓ 调用业务
BLL 层
   ↓ 调用数据
DAL 层
   ↓ 查数据库
返回数据 → BLL → Presenter → View 显示

六、为什么要在三层里用 MVP?(核心价值)

不加 MVP:

复制代码
UI 层按钮点击
   ↓
直接调用 BLL、DAL
   ↓
界面.cs 文件几千行,维护灾难

加 MVP:

复制代码
界面只管显示
逻辑全部抽到 Presenter
界面和逻辑彻底分离
可测试、可复用、可维护

七、一句话总结(博客最吸睛)

三层架构是项目的整体骨架,MVP 是 UI 层的内部灵魂。

Presenter 就是 UI 层与 BLL 层之间的"干净连接器"。


相关推荐
IT枫斗者4 小时前
前端部署后如何判断“页面是不是最新”?一套可落地的版本检测方案(适配 Vite/Vue/React/任意 SPA)
前端·javascript·vue.js·react.js·架构·bug
AI自动化工坊8 小时前
Late框架技术深度解析:5GB VRAM实现10倍AI编码效率的工程架构
人工智能·5g·架构·ai编程·late
空中海8 小时前
第六篇:架构篇 — 微服务、部署、高并发与专家级能力
微服务·云原生·架构
Wave8458 小时前
基于 STM32 + ESP8266 + W25Q64 的双核 OTA 底层架构总结
stm32·嵌入式硬件·架构
yongyoudayee9 小时前
CRM架构演进:从记录系统到执行引擎的技术解析
架构
源码宝9 小时前
基于 SpringBoot + Vue 的医院随访系统:技术架构与功能实现
java·vue.js·spring boot·架构·源码·随访系统·随访管理
有马贵将10 小时前
【5】微前端知识点总结
前端·架构
ting945200011 小时前
深入解析 Social Fetch 机制:原理、架构、应用场景、实战落地与性能优化全攻略
人工智能·性能优化·架构
ZOOOOOOU11 小时前
云边端协同架构下,门禁权限引擎的离线决策与策略续存实现
大数据·人工智能·架构
heimeiyingwang12 小时前
【架构实战】编排vs协同:微服务通信架构选型
微服务·云原生·架构