分层解耦讲解
1. 分层解耦架构
三层架构设计:
Controller层 → Service层 → DAO层
↓ ↓ ↓
接收请求 业务逻辑 数据访问
- Controller层:EmpController 负责接收HTTP请求,调用Service层方法
- Service层:EmpServiceA/B 处理业务逻辑,依赖DAO层获取数据
- DAO层:负责数据库操作
2. 两种依赖管理方式对比
方式 | 代码示例 | 特点 | 问题 |
---|---|---|---|
传统方式 | private EmpDao empDao = new EmpDaoA(); | 自己创建依赖对象 | 高耦合,难以测试 |
现代方式 | private EmpDao empDao; | 依赖外部注入 | 低耦合,易于测试 |
3. 核心概念
3.1 控制反转 (IoC)
- 定义:对象的创建和管理权从程序代码转移到外部容器
- 好处:降低耦合度,提高模块独立性
- 示例:EmpServiceB 不再自己创建 EmpDao,而是由容器提供
3.2 依赖注入 (DI)
- 定义:容器在运行时为应用程序提供其所依赖的资源
- 实现方式:构造器注入、Setter注入、字段注入
- 示例:容器自动将 EmpDao 实例注入到 EmpServiceB 中
3.3 Bean对象
- 定义:在IoC容器中创建、配置和管理的对象
- 范围:Service、DAO、Controller等所有Spring组件
- 管理:由Spring容器统一管理生命周期
4. 简单总结
核心思想:
- 分层:每层职责单一,通过接口交互
- 解耦:依赖接口而非具体实现
- 反转:对象创建权交给容器管理
- 注入:容器自动提供依赖对象
实际效果:
- 代码更易维护和测试
- 模块间耦合度降低
- 系统扩展性增强
- 符合现代软件开发最佳实践
这就是为什么现代Java开发都使用Spring框架的原因:通过IoC和DI实现代码的解耦和模块化!