什么是领域驱动设计? [关闭]
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 的下一个级别,其中封装完全是关于用户描述和理解的问题空间,而不是技术实现。
【讨论】:
以上是关于什么是领域驱动设计? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章