什么是领域驱动设计? [关闭]

Posted

技术标签:

【中文标题】什么是领域驱动设计? [关闭]【英文标题】:What is domain driven design? [closed] 【发布时间】:2010-09-11 04:31:22 【问题描述】:

所以我从团队中的一位开发人员那里得到了这个问题:什么是领域驱动设计?我当然可以指出埃文斯的书,但这实际上是一个答案吗?

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

【问题讨论】:

> 版主注意:链接可能不再相关 访问http://dddcommunity.org/ 【参考方案1】:

我会说这种做法有助于将您的精力集中在“问题空间”而不是“解决方案空间”上。通过学习并真正了解和理解领域来推动紧急解决方案(设计)。其中一种实践(取自 XP)是编写发生在问题域中的故事。从这些您可以确定您的设计用例和对象。它们“出现”并告诉您解决方案中需要包含哪些内容,以及它们需要如何相互交互。

【讨论】:

【参考方案2】:

InfoQ 有一本免费的电子书:

Domain Driven Design Quickly

这是一本很好的书,有很多例子。

【讨论】:

很好很简洁。我们团队的新开发人员现在必须阅读它。【参考方案3】:

在发现“领域”的过程中,您形成了一种通用语言,开发人员和项目中的所有其他利益相关者都能理解。

领域模型及其“术语”在成品的源代码中非常明显。这至少是我的经验

【讨论】:

【参考方案4】:

DDD 的一个重要部分是所谓的泛在语言;即与业务专家说相同的语言。并使您的代码/架构能够反映这种语言以避免阻抗问题。

【讨论】:

据我了解,不是程序员说领域专家语言,而是开发一种通用语言。 @sumek 试图让人们就通用语言达成一致可能并不值得。让企业同意任何事情需要很长时间。根据我的经验,通常最好遵守现有的术语,也就是说,如果您想按时发货......【参考方案5】:

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

【讨论】:

【参考方案6】:

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

很难用几句话来描述,但我会推荐InfoQ这本书作为很好的介绍。我还听说很多人用 Evans 的 DDD 书建立了一个读书俱乐部,这对理解它有很大帮助。

【讨论】:

自从蓝皮书 10 年前编写以来,DDD 已经取得了很大进展。那时,富领域模型确实是以一种内聚的方式捕获业务复杂性的唯一方法。现在我们有了更多的选择,比如 CQRS 和事件溯源,所以 DDD == rich domain model 的旧观念不成立。我很欣赏这个答案本身是 5 年前写的。【参考方案7】:

对我来说是 OOD/OOP 的下一个级别,其中封装完全是关于用户描述和理解的问题空间,而不是技术实现。

【讨论】:

以上是关于什么是领域驱动设计? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

DDD领域驱动设计-DDD概览

领域驱动设计-什么是领域驱动设计和怎么使用它

领域驱动设计认识了解什么是领域驱动

领域驱动设计认识了解什么是领域驱动

什么是DDD(领域驱动设计)?

领域驱动设计(DDD)实践之路(第二篇)