我读到域驱动设计是关于专注于问题域而不是专注于软件。他们说解决问题领域的复杂性比解决软件的复杂性更容易,因为在解决了领域之后,您也更了解如何构建软件。他们还说,实际上域比软件的结构更复杂,或者如果你从树林里看不到森林,你就有麻烦了。
但是领域驱动设计与仅使用软件规范有何不同?我的意思是,我们当然应该在开始编码之前了解问题域。DDD 是在重新发明轮子吗?
我读到域驱动设计是关于专注于问题域而不是专注于软件。他们说解决问题领域的复杂性比解决软件的复杂性更容易,因为在解决了领域之后,您也更了解如何构建软件。他们还说,实际上域比软件的结构更复杂,或者如果你从树林里看不到森林,你就有麻烦了。
但是领域驱动设计与仅使用软件规范有何不同?我的意思是,我们当然应该在开始编码之前了解问题域。DDD 是在重新发明轮子吗?
领域驱动设计更多的是建立一个您和领域专家都可以使用的世界通用模型(以及相关的通用语言)。
从理论上讲,这意味着开发人员可以编写读起来像问题域描述的代码,而领域专家可以越过开发人员的肩膀,看看发生了什么。
规范没有对通用语言或世界模型做出这样的承诺,它只是说“我们将构建特定的东西”。您提出的高度指定的类模型可能有效,但它可能不能特别好地反映“现实”。
这里有一本关于领域驱动设计的好书(不幸的是需要登录)。