干净的领域驱动设计(DDD)是乌托邦吗? [关闭]

Posted

技术标签:

【中文标题】干净的领域驱动设计(DDD)是乌托邦吗? [关闭]【英文标题】:Is clean domain-driven-design(DDD) a utopia? [closed] 【发布时间】:2011-09-10 16:04:21 【问题描述】:

我想我读过所有关于 DDD 以及如何在 C# 中应用它的书(3-5 本书,不记得是几年前的了)。

但在过去的 2 年里,我在所有项目中都使用了贫血域模型,并且效果很好。实际上我从未尝试过实现纯域模型,而且我从未见过使用干净域模型方法的一段代码。

以书中关于 DDD 的代码为例,它不遵循 DDD 风格。以 Tim MacCarthy 关于 DDD http://dddpds.codeplex.com/ 的书中的代码代码为例,看看他的域对象,它们对任何行为都是干净的,这只是 DTO 他集成到域对象中的唯一东西是验证,如果我在 DDD 中没记错的话,你的域应该不处于无效状态,因此您应该防止设置无效值并抛出异常,而不是允许设置它们并在某个时候进行验证。

与其他书籍和示例代码的情况相同,它们都非常简单,仅显示一个具有属性的类,您最多可以找到一组用于插入/删除设置父属性的子对象的方法。例如,我几乎从未见过使用域事件的代码,或者将服务注入到域对象中。

2003 年 Martin Fowler 写了一篇文章告诉我们贫血域模型是一个坏东西http://www.martinfowler.com/bliki/AnemicDomainModel.html 8 年过去了,我认为贫血模型现在很流行(它演变为分层架构)。并且在 3-Tier RIA 开发中被大量使用。

所以我的主要问题是干净的 DDD 是一个乌托邦吗?它死了吗?因为我在过去 3 年中看到的所有代码都是分层架构(在我看来,它本质上是贫乏的领域模型)。如果存在的话,我非常希望看到一些干净的 DDD 代码。

【问题讨论】:

这完全是主观的。投票结束。 @Oded:是的,这是主观的,没有一个正确的答案,但是其他开发者的意见对我来说很重要,我想听听。 然后发到programmers.stackexchange.com Alex - SO 是关于编程问题的,有明确答案的东西。程序员网站用于讨论和发表意见。 这是社区已经决定的事情 - 你可能不喜欢它,但它现在是这样工作的。 【参考方案1】:

你并不孤单。在大多数地方,真正的 DDD 将是一个乌托邦。根据我的经验,这主要有两个原因。

    业务不成熟,帮助开发者做领域建模。没有足够的时间、资源和精力去做。 项目组没有做过DDD,经验不是特别丰富。

DDD 也不适用于许多 CRUDy 应用程序。还有其他方法,例如 CQRS。 另请参阅以下博客链接,这些链接为贫血领域模型提供了案例。

http://codebetter.com/gregyoung/2009/07/15/the-anemic-domain-model-pattern/http://lostechies.com/jimmybogard/2009/12/03/persistence-model-and-domain-anemia/

【讨论】:

以上是关于干净的领域驱动设计(DDD)是乌托邦吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

有没有使用 DDD(领域驱动设计)的开源项目? [关闭]

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

1.实现领域驱动设计 --- DDD入门

DDD领域驱动设计-DDD概览

快速入门领域驱动设计(DDD)工作坊

域驱动设计可以用例驱动吗?