领域驱动设计(DDD)的中心内容是如何将业务领域概念映射到软件工件中。大部分关于此主题的著作和文章都以 Eric Evans 的书《领域驱动设计》为基础,主要从概念和设计的角度探讨领域建模和设计情况。这些著作讨论实体、值对象、服务等 DDD 的主要内容,或者谈论通用语言、界定的上下文(Bounded Context)和防护层(Anti-Corruption Layer)这些的概念。
本文旨在从实践的角度探讨领域建模和设计,涉及如何着手处理领域模型并实际地实现它。我们将着眼于技术主管和架构师在实现过程中能用到的指导方针、最佳实践、框架及工具。领域驱动设计和开发也受一些架构、设计、实现方面的影响,比如:
- 业务规则
- 持久化
- 缓存
- 事务管理
- 安全
- 代码生成
- 测试驱动开发
- 重构
本文讨论这些不同的因素在项目实施的整个生命周期中怎样对其产生影响,还有架构师在实现成功的 DDD 中应该去寻求什么。我会先列出领域模型应该具备的典型特征,以及何时在企业中使用领域模型(相对于根本不使用领域模型,或使用贫血的领域模型来说)。
文章包括一个贷款处理示例应用,来演示如何将设计立场、以及这里讨论的开发最佳实践,应用在真实的领域驱动开发项目之中。示例应用用了一些框架去实现贷款 处理领域模型,比如 Spring、Dozer、Spring Security、JAXB、Arid POJOs 和 Spring Dynamic Modules。示例代码用 Java 编写,但对大多数开发人员来说,不论语言背景如何,代码都是很容易理解的。
详细内容,请阅读全文:领域驱动设计和开发实战。
评论