埃文斯 / 人民邮电出版社 / 2010年11月01日
《领域驱动设计:软件核心复杂性应对之道》一书由埃文斯所著,是领域驱动设计领域的经典作品。本书聚焦于软件设计和开发实践,通过多个真实的项目案例,深入阐述了如何在实际软件开发中应用领域驱动设计的思想和方法。读者可以从中学习到如何应对软件核心复杂性,提高软件质量和可维护性。本书不仅适合软件开发人员阅读,也适合软件架构师、项目经理等相关人员参考。通过本书的学习,读者可以更好地掌握领域驱动设计的精髓,为软件开发注入新的活力和思路,从而更加高效地开发出高质量的软件产品。总之,这是一本不可多得的软件设计经典之作,值得广大软件开发人员深入阅读和领悟。
可滚动、双指缩放查看
第一章:领域驱动设计简介
1.1 软件开发中的复杂性
问题:随着软件规模增长,复杂性成为开发者的主要挑战。
影响:复杂性导致软件难以维护、扩展和适应变化。
1.2 领域驱动设计的定义
DDD是一套软件开发方法论,专注于核心业务逻辑与软件的复杂性管理。
目标:实现软件与业务的紧密对齐,确保长期的可维护性和可扩展性。
1.3DDD的核心原则
聚焦核心业务:优先处理体现业务价值的代码。
协作式开发:开发团队应与领域专家密切合作。
持续集成与开发:以迭代方式交付可用软件。
技术债务管理:优化代码质量以避免长远的技术债务。
描述:对业务领域的抽象表达,包括实体、价值和功能。
价值:作为软件开发人员和业务专家的共同语言。
**实体**(Entity):具有唯一标识符的对象。
**值对象**(Value Object):无需唯一标识的值类。
**聚合**(Aggregate):一组实体和值对象的集合,形成保护其内部一致性的边界。
**领域服务**(Domain Service):在模型执行的重要操作,不自然归属于实体或值对象。
第二章:领域模型
2.1 什么是领域模型
2.2 领域模型的组成部分
2.3 建立有效的领域模型
深入理解业务:通过工作坊等方法深入了解业务流程。
概念一致性:在模型中维护术语和业务规则的一致性。
迭代式设计:通过不断反馈和调整完善模型。
提供系统的界面,协调领域模型中的活动。
实现用例流程,但不应包含业务逻辑。
**领域服务**执行业务逻辑,通常不涉及用户交互。
**应用服务**处理用户请求,调用领域服务来完成具体工作。
第三章:应用服务与领域服务
3.1 应用服务的作用
3.2 区分应用服务与领域服务
3.3 设计应用服务
无状态:应用服务不应包含业务实体或状态的持久化信息。
单一职责:每个应用服务负责一个具体的用例。
依赖倒置:依赖于接口而不是具体实现。
保证不同组件之间的交互按照预期进行。
更接近真实世界的系统行为。
确保服务和消费者之间的交互协议得到遵守。
可以独立于实现细节进行测试。
使用工具如Pact来定义和执行契约。
在微服务架构中尤为重要,确保服务间交互的一致性。
第四章:集成测试与契约测试
4.1 集成测试的重要性
4.2 契约测试的概念
4.3 实施契约测试