# 八股-DDD - [面试题](#%E9%9D%A2%E8%AF%95%E9%A2%98) - [什么是实体,什么是值对象?](#%E4%BB%80%E4%B9%88%E6%98%AF%E5%AE%9E%E4%BD%93%EF%BC%8C%E4%BB%80%E4%B9%88%E6%98%AF%E5%80%BC%E5%AF%B9%E8%B1%A1%EF%BC%9F) - [什么是聚合,什么是聚合根?](#%E4%BB%80%E4%B9%88%E6%98%AF%E8%81%9A%E5%90%88%EF%BC%8C%E4%BB%80%E4%B9%88%E6%98%AF%E8%81%9A%E5%90%88%E6%A0%B9%EF%BC%9F) - [什么是领域事件?](#%E4%BB%80%E4%B9%88%E6%98%AF%E9%A2%86%E5%9F%9F%E4%BA%8B%E4%BB%B6%EF%BC%9F) - [如何理解领域驱动设计?](#%E5%A6%82%E4%BD%95%E7%90%86%E8%A7%A3%E9%A2%86%E5%9F%9F%E9%A9%B1%E5%8A%A8%E8%AE%BE%E8%AE%A1%EF%BC%9F) - [请详细描述DDD的实现流程?](#%E8%AF%B7%E8%AF%A6%E7%BB%86%E6%8F%8F%E8%BF%B0DDD%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%B5%81%E7%A8%8B%EF%BC%9F) - [DDD的分层架构是怎么样的?](#DDD%E7%9A%84%E5%88%86%E5%B1%82%E6%9E%B6%E6%9E%84%E6%98%AF%E6%80%8E%E4%B9%88%E6%A0%B7%E7%9A%84%EF%BC%9F) - [DDD核心概念详解](#DDD%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5%E8%AF%A6%E8%A7%A3) - [**分层架构职责**](#**%E5%88%86%E5%B1%82%E6%9E%B6%E6%9E%84%E8%81%8C%E8%B4%A3**) - [**战略设计要素**](#**%E6%88%98%E7%95%A5%E8%AE%BE%E8%AE%A1%E8%A6%81%E7%B4%A0**) - [**战术设计模式**](#**%E6%88%98%E6%9C%AF%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F**) - [**实施要点**](#**%E5%AE%9E%E6%96%BD%E8%A6%81%E7%82%B9**) - [**常见误区**](#**%E5%B8%B8%E8%A7%81%E8%AF%AF%E5%8C%BA**) ## 面试题 - DDD的分层架构是怎么样的? - 什么是充血模型和贫血模型? - 什么是实体,什么是值对象? - 什么是聚合,什么是聚合根? - 什么是领域事件? - 如何理解领域驱动设计? - 请详细描述DDD的实现流程? | 问题 | 关键词/关键概念 | | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | 如何理解领域驱动设计? | **核心思想**:业务复杂度驱动、统一语言(Ubiquitous Language)、界限上下文(Bounded Context)、战略设计+战术设计、业务专家协作、模型驱动、持续演进 | | 请详细描述DDD的实现流程? | **战略设计**:1.事件风暴识别领域事件 2.划分界限上下文 3.上下文映射关系<br>**战术设计**:4.识别聚合和实体 5.定义值对象 6.设计领域服务 7.定义仓储接口<br>**实现落地**:8.分层架构搭建 9.编写领域模型 10.实现应用服务 11.基础设施实现 12.持续重构优化 | | DDD的分层架构是怎么样的? | **用户接口层**(Controller/API)→**应用层**(Application Service编排/协调)→**领域层**(Entity/Value Object/Domain Service核心业务)→**基础设施层**(Repository/DB/MQ技术实现)、依赖倒置、领域层不依赖其他层 | | 什么是充血模型和贫血模型? | **贫血模型**:实体只有属性getter/setter、业务逻辑在Service、面向过程、违反OOP<br>**充血模型**:实体包含业务行为、自包含业务逻辑、面向对象、高内聚 | | 什么是实体,什么是值对象? | **实体Entity**:有唯一标识ID、生命周期、可变状态、如User/Order<br>**值对象Value Object**:无标识、不可变、通过属性判等、可替换、如Money/Address | | 什么是聚合,什么是聚合根? | **聚合Aggregate**:一组相关对象的集合、事务一致性边界、整体概念单元<br>**聚合根Aggregate Root**:聚合的唯一入口、对外暴露接口、维护聚合内一致性、如Order是OrderItem的聚合根 | | 什么是领域事件? | **Domain Event**:领域中发生的业务事件、过去时命名如OrderPlaced、事件驱动、解耦聚合、最终一致性、事件溯源、包含时间戳和相关数据 | ## 如何理解领域驱动设计? 感觉就是一种极致的[[面向对象]] | 问题 | 关键词/关键概念 | | ----------- | -------------------------------------------------------------------------------------------- | | 如何理解领域驱动设计? | **核心思想**:业务复杂度驱动、统一语言(Ubiquitous Language)、界限上下文(Bounded Context)、战略设计+战术设计、业务专家协作、模型驱动、持续演进 | ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/fix-dir%2Fpicgo%2Fpicgo-clipboard-images%2F2026%2F02%2F01%2F00-23-15-e6c8643af00a7e20f8a862b2adee5d9a-202602010023969-d6babc.png) ## 请详细描述DDD的实现流程? | 问题 | 关键词/关键概念 | | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | 请详细描述DDD的实现流程? | **战略设计**:1.事件风暴识别领域事件 2.划分界限上下文 3.上下文映射关系<br>**战术设计**:4.识别聚合和实体 5.定义值对象 6.设计领域服务 7.定义仓储接口<br>**实现落地**:8.分层架构搭建 9.编写领域模型 10.实现应用服务 11.基础设施实现 12.持续重构优化 | ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/fix-dir%2Fpicgo%2Fpicgo-clipboard-images%2F2026%2F02%2F01%2F00-21-12-4b9688696f10c249e54e215728be982d-202602010021013-cd5d95.png) ## DDD的分层架构是怎么样的? | 问题 | 关键词/关键概念 | | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | DDD的分层架构是怎么样的? | **用户接口层**(Controller/API)→**应用层**(Application Service编排/协调)→**领域层**(Entity/Value Object/Domain Service核心业务)→**基础设施层**(Repository/DB/MQ技术实现)、依赖倒置、领域层不依赖其他层 | ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/fix-dir%2Fpicgo%2Fpicgo-clipboard-images%2F2026%2F02%2F01%2F00-18-57-e077ef26ee2e83fec9db65e6b761667f-202602010018515-902fd3.png) ## 什么是实体,什么是值对象? | 问题 | 关键词/关键概念 | | ------------- | --------------------------------------------------------------------------------------------------- | | 什么是实体,什么是值对象? | **实体Entity**:有唯一标识ID、生命周期、可变状态、如User/Order<br>**值对象Value Object**:无标识、不可变、通过属性判等、可替换、如Money/Address | ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/fix-dir%2Fpicgo%2Fpicgo-clipboard-images%2F2026%2F02%2F01%2F00-26-46-6dae62d07bdfb8359d3589f8ea7f5430-202602010026525-979425.png) ## 什么是聚合,什么是聚合根? | 问题 | 关键词/关键概念 | | ------------- | -------------------------------------------------------------------------------------------------------------- | | 什么是聚合,什么是聚合根? | **聚合Aggregate**:一组相关对象的集合、事务一致性边界、整体概念单元<br>**聚合根Aggregate Root**:聚合的唯一入口、对外暴露接口、维护聚合内一致性、如Order是OrderItem的聚合根 | ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/fix-dir%2Fpicgo%2Fpicgo-clipboard-images%2F2026%2F02%2F01%2F00-24-54-7b3aed7b9689cb541b9ecf9889b08624-202602010024253-bdd47a.png) ## 什么是领域事件? | 问题 | 关键词/关键概念 | | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | 什么是领域事件? | **Domain Event**:领域中发生的业务事件、过去时命名如OrderPlaced、事件驱动、解耦聚合、最终一致性、事件溯源、包含时间戳和相关数据 | ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/fix-dir%2Fpicgo%2Fpicgo-clipboard-images%2F2026%2F02%2F01%2F00-23-59-c620887d7baf258d8a6ad280136832ac-202602010023986-6beb24.png) ## 什么是充血模型和贫血模型? | 什么是充血模型和贫血模型? | **贫血模型**:实体只有属性getter/setter、业务逻辑在Service、面向过程、违反OOP<br>**充血模型**:实体包含业务行为、自包含业务逻辑、面向对象、高内聚 | | ------------- | ------------------------------------------------------------------------------------------ | ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/fix-dir%2Fpicgo%2Fpicgo-clipboard-images%2F2026%2F02%2F01%2F00-29-11-ded9df3fe76f76f642a486225793f4c1-202602010029008-dc9635.png) ## DDD核心概念详解 ### **分层架构职责** - **用户接口层**:REST API、Web页面、DTO转换、参数校验 - **应用层**:用例编排、事务管理、权限控制、调用领域服务 - **领域层**:核心业务规则、领域模型、业务不变量、领域服务 - **基础设施层**:数据持久化、消息队列、缓存、第三方服务集成 ### **战略设计要素** - **界限上下文**:明确边界、独立部署、数据隔离、团队自治 - **上下文映射**:共享内核、客户供应商、防腐层、开放主机服务 - **统一语言**:业务术语一致、代码体现业务、减少翻译成本 ### **战术设计模式** - **工厂模式**:复杂对象创建 - **仓储模式**:持久化抽象 - **规约模式**:业务规则封装 - **领域服务**:跨聚合业务逻辑 ### **实施要点** - **事件风暴**:与业务专家协作、发现领域事件、识别聚合边界 - **增量迭代**:小步快跑、持续重构、演进式设计 - **测试驱动**:单元测试保护领域逻辑、集成测试验证用例 ### **常见误区** - 过度设计、所有项目都用DDD - 忽视业务复杂度、技术驱动而非业务驱动 - 贫血模型假DDD、只用战术模式忽视战略设计 - 聚合边界过大、事务范围不当