DDD-Lite是一种用于依赖注入的模式语言吗?


17

我偶然发现了格雷格·杨(Greg Young)的演讲DDD项目失败的7个原因,他在7:20提到了他称为DDD-Lite的内容。

概括地说,他基本上说有些人将DDD用作模式语言(实体,存储库,值对象,服务等),而没有做任何其他与DDD相关的事情。他假设.Net中60%或更多的域模型是DDD-Lite。他认为DDD-Lite基本上是在围绕依赖注入构建一种语言,而您实际上并不需要这样做。他说要么完全做DDD,要么做一些简单的事情。否则,他声称一个人正在为构建良好的抽象而进行所有这些工作,但是没有任何实际的好处。

我必须承认,我对DDD的了解不尽如人意,并且还没有尝试使用它。我也没有读过Eric Evan的书。我对依赖注入更加感兴趣,关于此主题的许多书籍和博客都使用Eric Evans的DDD书籍中的术语和参考概念。这是我接触过DDD概念的地方。我一直在阅读的书籍包括:

  • .NET中的依赖注入
  • Microsoft .Net:为企业设计应用程序
  • .NET中的Brownfield应用程序开发

如果要进行依赖注入,那么比“ DDD-Lite”更简单的选择是什么?在我看来,建立良好的抽象非常有用,无论人们是否以“ DDD-Lite”方式使用DDD中的概念。(请参阅Mark Seemann的博客文章:接口不是抽象而是迈向更好的抽象)。我很难相信每个进行依赖注入的人也都在做(或需要做)完整的DDD。我是否以某种方式误解了格雷格·扬(Greg Young)关于DDD-Lite的论点?

Answers:


15

依赖注入和DDD是两个不相交的概念。进行依赖注入不需要DDD,也不需要DDD进行依赖注入。

许多DDD项目失败是因为他们选择了模式,却忽略了DDD背后的过程。他们不花时间提取业务规则。他们不专注于领域模型和仔细的抽象。他们没有建立通用语言。

简而言之:我想这是一个误会


4
+1在Evans的书中描述的模式在更广泛的范围内仍然很有价值-只要人们知道孤立地应用它们并不会使其成为DDD。
Mark Seemann

1
是的,我意识到DI!= DDD。@MarkSeemann,所以Greg的论点似乎是人们说他们在不做DDD的情况下。好吧,我明白了。但是他也认为,如果仅将DDD中使用的抽象(聚合,存储库,域实体,值对象,服务等)用于支持依赖项注入的体系结构,则没有必要。那是我不了解的部分(问题出在哪里)。也许这就是稻草人的论点,因为使用这些东西不只是 “围绕依赖注入构建一种语言”。
马特

3
格雷格部分正确:DDD中的特殊模式与DI无关。但是,在我的书中,我选择了一些术语,尤其是Entity vs. Value Object vs. Service的定义,因为了解在哪里注入什么很重要。但是,此术语以及诸如Repository和Factory之类的其他模式都比DDD书要古老得多,因此说在DDD之外不需要这些东西对我来说是不正确的。这可能取决于您实际定义DDD的方式。
Mark Seemann

2

我敢打赌,Greg是指简单的应用程序,如果它是域驱动设计模式的子集而不是整个DDD方法。DDD-Lite一词暗含地指的是http://www.infoq.com/minibooks/domain-driven-design-quickly这本书,该书曾经在DDD新手中很流行,但由于只专注于DDD,所以错过了整个画面。本地建模设计模式。

尽管依赖注入被认为是一件好事,但DDD和DI之间没有强相关性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.