分层架构

3 minIntermediate2026/6/14

分层架构模式、表现层/业务层/持久层设计与实践。

1. 分层架构概述

1.1 核心思想

将系统按职责分为多个水平层,每层只与相邻层交互:

┌─────────────────────────────┐
│        表现层 (Presentation)  │  ← 用户界面
├─────────────────────────────┤
│        业务层 (Business)      │  ← 业务逻辑
├─────────────────────────────┤
│        持久层 (Persistence)   │  ← 数据访问
├─────────────────────────────┤
│        数据库层 (Database)    │  ← 数据存储
└─────────────────────────────┘

1.2 分层原则

原则说明
单向依赖上层依赖下层,下层不依赖上层
隔离变化层内变化不影响其他层
关注点分离每层只关注自己的职责
可替换性每层可独立替换实现

2. 各层职责

2.1 表现层

职责说明
用户交互接收用户输入
数据展示格式化输出
请求路由分发请求到业务层
输入验证基本格式校验

2.2 业务层

职责说明
业务逻辑核心业务规则
流程编排协调多个服务
事务管理保证数据一致性
权限控制业务级权限

2.3 持久层

职责说明
数据访问CRUD操作
ORM映射对象-关系映射
查询优化SQL优化
缓存管理数据缓存

3. 分层变体

3.1 严格分层

每层只能调用直接下层

表现层 → 业务层 → 持久层 → 数据库

3.2 松散分层

允许跨层调用(如表现层直接调用持久层进行简单查询):

表现层 → 业务层 → 持久层 → 数据库
   │              ↑
   └──────────────┘ (简单查询可跳过业务层)

3.3 常见分层模式

模式层次示例
三层架构表现-业务-数据Java EE
四层架构表现-应用-领域-基础设施DDD
六边形架构核心+适配器Alistair Cockburn
洋葱架构领域核心+多层环绕Jeffrey Palermo

4. 分层架构优缺点

4.1 优点

  • 简单易懂:团队快速上手
  • 关注点分离:各层职责清晰
  • 可测试性:每层可独立测试
  • 标准化:业界广泛采用

4.2 缺点

  • 性能开销:多层调用增加延迟
  • 过度抽象:简单功能也需经过所有层
  • 腐化风险:层间边界容易被打破
  • 单体倾向:容易变成大泥球

5. 最佳实践

实践说明
DTO转换层间使用DTO而非暴露领域模型
依赖倒置业务层定义接口,持久层实现
防腐层外部系统集成使用适配器
统一异常处理每层转换异常
日志规范每层记录适当级别的日志