什么是域驱动设计?

时间:2020-03-06 14:25:26  来源:igfitidea点击:

因此,我从团队中的一位开发人员那里提出了一个问题:什么是域驱动设计?我当然可以指向Evans的书,但这实际上是答案吗?

我们如何用几句话向团队中的初级软件工程师解释DDD?

解决方案

我想说,这种做法可以促进我们将精力集中在"问题空间"而不是"解决方案空间"上。通过研究和真正了解和理解领域来驱动紧急解决方案(设计)。一种做法(取自XP)是写在问题域中发生的故事。从这些中,我们可以确定用例和设计对象。他们"出现"并告诉我们解决方案中需要包含什么,以及它们将如何彼此交互。

DDD的重要组成部分是所谓的普遍存在的语言。即说的语言与业务专家的语言相同。并使代码/体系结构能够反映这种语言,从而避免阻抗问题。

在发现"域"的过程中,我们会形成一种公共语言,开发人员和项目中的所有其他涉众都可以理解。

在成品的源代码中,域模型及其"术语"是相当明显的。那至少是我的经验

试图了解我们正在编写的软件是关于什么的,并在模型中反映出这种理解。

InfoQ拥有免费的电子书:

快速域驱动设计

阅读大量示例,是不错的选择。

域驱动设计是关于在最容易提取的领域模型中管理应用程序的复杂性。

用几句话很难描述,但是我建议我们将InfoQ本书作为一个很好的介绍。我也听说很多人都在使用埃文斯(Evans)的DDD书来做读书俱乐部,这对理解书有很大帮助。

对我来说,是OOD / OOP的下一个层次,其中封装完全是关于问题空间的,正如用户所描述和理解的那样,而不是技术实现方面的问题。