# 领域驱动设计 ## 什么是DDD? ABP框架提供了**基础设施**使基于**领域驱动设计**的开发更易实现. DDD在[维基百科中的定义](https://zh.wikipedia.org/wiki/%E5%9F%9F%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91)如下: > **领域驱动设计(DDD)** 是一种通过将实现连接到持续进化的模型来满足复杂需求的软件开发方法. 领域驱动设计的前提是: > > - 把项目的主要重点放在核心领域和领域逻辑上 > - 把复杂的设计放在领域模型上 > - 发起技术专家和领域专家之间的创造性协作,以迭代方式完善解决特定领域问题的概念模型 ### 分层 ABP框架遵循DDD原则和模式去实现分层应用程序模型,该模型由四个基本层组成: - **表示层**: 为用户提供接口. 使用*应用层*实现与用户交互. - **应用层**: 表示层与领域层的中介,编排业务对象执行特定的应用程序任务. 使用应用程序逻辑实现用例. - **领域层**: 包含业务对象以及业务规则. 是应用程序的核心. - **基础设施层**: 提供通用的技术功能,支持更高的层,主要使用第三方类库. ## 内容 * **领域层** * [实体与聚合根](Entities.md) * 值对象 * [仓储](Repositories.md) * 领域服务 * 规约 * **应用层** * [应用服务](Application-Services.md) * [数据传输对象(DTO)](Data-Transfer-Objects.md) * 工作单元