真下饭!字节技术官DDD(领域驱动设计)手册,拆解业务代码首选

简介: 至少20年前,一些顶尖的软件设计人员就已经认识到领域建模和设计的重要性,但令人惊讶的是,这么长时间以来几乎没有人写出点儿什么,告诉大家应该做哪些工作或如何去做。尽管这些工作还没有被清楚地表述出来,但一种新的思潮已经形成,它像一股暗流一样在对象社区中涌动,我把这种思潮称为领域驱动设计(domain-driven design)。

前 言

至少20年前,一些顶尖的软件设计人员就已经认识到领域建模和设计的重要性,但令人惊讶的是,这么长时间以来几乎没有人写出点儿什么,告诉大家应该做哪些工作或如何去做。尽管这些工作还没有被清楚地表述出来,但一种新的思潮已经形成,它像一股暗流一样在对象社区中涌动,我把这种思潮称为领域驱动设计(domain-driven design)。

过去10年中,我在几个业务和技术领域开发了一些复杂的系统。我在设计和开发过程中尝试了一些最佳实践,它们都是面向对象开发高手用过的领先技术。有些项目非常成功,但有几个项目却失败了。成功的项目有一个共同的特征,那就是都有一个丰富的领域模型,这个模型在迭代设计的过程中不断演变,而且成为项目不可分割的一部分。

本书为作出设计决策提供了一个框架,并且为讨论领域设计提供了一个技术词汇库。本书将人们普遍接受的一些最佳实践综合到一起,并融入了我自己的见解和经验。面对复杂领域的软件开发团队可以利用这个框架来系统性地应用领域驱动设计。

内 容 提 要

本书是领域驱动设计方面的经典之作,全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。书中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些最佳实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计最佳实践、已验证过的技术以及便于应对复杂领域的软件项目开发的基本原则。适合各层次的面向对象软件开发人员、系统分析员阅读。

完整内容已上传网盘,有感兴趣需要获取学习的朋友,可以点击此处来获取就可以了!

本书分为4个部分。

第一部分“运用领域模型”

提出领域驱动开发的基本目标,这些目标是后面几部分中所讨论的的实践的驱动因素。由于软件开发方法有很多,因此第一部分还定义了一些术语,并给出了用领域模型来驱动沟通和设计的总体含义。

第二部分“模型驱动设计的构造块”

将面向对象领域建模中的一些核心的最佳实践提炼为一组基本的构造块。这一部分主要是消除模型与实际运行的软件之间的鸿沟。团队一致使用这些标准模式就可以使设计井然有序,并且使团队成员更容易理解彼此的工作。使用标准模式还可以为公共语言贡献术语,使得所有团队成员可以使用这些术语来讨论模型和设计决策。但这一部分的主旨是讨论一些能够保持模型和实现之间互相协调并提高效率的设计决策。要想达到这种协调,需要密切注意个别元素的一些细节。这种小规模的仔细设计为开发人员提供了一个稳固的基础,在此基础上就可以应用第三部分和第四部分讨论的建模方法了。

第三部分“通过重构来加深理解”

讨论如何将构造块装配为实用的模型,从而实现其价值。这一部分没有直接讨论深奥的设计原则,而是着重强调一个发现过程。有价值的模型不是立即就会出现的,它们需要对领域的深入理解。这种理解是一步一步得到的,首先需要深入研究模型,然后基于最初的(可能是不成熟的)模型实现一个初始设计,再反复改进这个设计。每次团队对领域有了新的理解之后,都需要对模型进行改进,使模型反映出更丰富的知识,而且必须对代码进行重构,以便反映出更深刻的模型,并使应用程序可以充分利用模型的潜力。这种一层一层“剥洋葱”的方法有时会创造一种突破的机会,使我们得到更深刻的模型,同时快速进行一些更深入的设计修改。

第四部分“战略设计”

讨论在复杂系统、大型组织以及与外部系统和遗留系统的交互中出现的复杂情况。这一部分探讨了作为一个整体应用于系统的3条原则:上下文、提炼和大型结构。战略设计决策通常由团队制定,或者由多个团队共同制定。战略设计可以保证在大型系统或应用程序(它们应用于不断延伸的企业级网络)上以较大规模去实现第一部分提出的目标。

本书通篇讨论使用的例子并不是一些过于简单的“玩具式”问题,而是全部选自实际项目。

文章展示到此结束,有感兴趣的朋友,请可以点击此处来获取就可以了!

相关文章
|
6月前
|
前端开发 测试技术 人机交互
DDD - 理论到落地从统一语言开始
DDD - 理论到落地从统一语言开始
363 0
|
11月前
|
数据安全/隐私保护
如何把DDD应用到实际项目中来,例子中需要包含具体的领域模型设计,这么做的理由,以及一位这个设计而引进的坑
如何把DDD应用到实际项目中来,例子中需要包含具体的领域模型设计,这么做的理由,以及一位这个设计而引进的坑
143 4
|
缓存 前端开发 中间件
DDD 领域驱动设计落地实践系列:工程结构分层设计
前面几篇文章中,笔者给大家阐述了 DDD 领域驱动设计的三大过程,重点围绕如何通过战略设计与战术设计进行 DDD 落地实践进行了详细的讨论,但是还没有涉及到工程层面的落地。实际上所有的这些架构理论到最后都是为了使得我们代码结构更加清晰,从而开发出 bug 少、扩展性强、逻辑清楚的应用。因此本文就是为了解决 DDD 领域驱动落地实践最后一公里问题,将我们分析出来的领域模型通过与工程结构的映射实现真正的落地。
DDD 领域驱动设计落地实践系列:工程结构分层设计
|
6月前
|
设计模式 监控 算法
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)
143 2
|
6月前
|
设计模式 监控 安全
编码之道:从函数到系统架构的思考
【4月更文挑战第29天】在软件开发的世界中,代码不仅仅是一种交流工具,它更是构建艺术的基石。本文将探讨从基本函数编写到整个系统架构设计的过程中所涉及的技术细节与感悟。我们将穿梭于代码的海洋,体会那些看似简单却蕴含深意的编程原则,以及如何在宏观与微观之间寻找平衡,打造出既优雅又高效的系统。
|
设计模式 缓存 搜索推荐
高德信息业务DDD实战 - 聊聊用领域重构胶水代码
本文记录了搞得信息业务DDD实战中如何用领域重构代码
高德信息业务DDD实战 - 聊聊用领域重构胶水代码
产品第三版面向对象角度的DDD落地
我们应该关注谁来做事,而不是怎么做事
|
消息中间件 前端开发 小程序
DDD实战之五:战略设计之上下文映射和系统分层架构(下)
DDD实战之五:战略设计之上下文映射和系统分层架构(下)
DDD实战之五:战略设计之上下文映射和系统分层架构(下)
|
Web App开发 机器学习/深度学习 数据可视化
万字长文解析,领域驱动设计(DDD)落地设计
领域驱动设计(简称 ddd)概念来源于2004年著名建模专家Eric Evans 发表的他最具影响力的书籍:《领域驱动设计——软件核心复杂性应对之道》(Domain-Driven Design –Tackling Complexity in the Heart of Software),简称Evans DDD,领域驱动设计思想进入软件开发者的视野。在将近20年的发展中领域模型设计一直占据着非常重要的位置,但其直接面向业务场景的设计思想,更适合在具有特定业务场景的模型构建。
|
前端开发 小程序 机器人
DDD实战之五:战略设计之上下文映射和系统分层架构(上)
DDD实战之五:战略设计之上下文映射和系统分层架构(上)
DDD实战之五:战略设计之上下文映射和系统分层架构(上)