【发布时间】:2011-04-19 12:50:00
【问题描述】:
我已经使用 4 个不同的层来练习 DDD 了一段时间:域、表示、应用程序和基础架构。最近,我向我的一个朋友介绍了 DDD 概念,他认为它引入了不必要的复杂层(特别是针对接口和 IoC)。通常,在这一点上,我会解释 DDD 的好处——尤其是它的模块化。所有繁重的工作和幕后工作都在基础架构中,如果我想彻底改变底层数据访问方法,我只需接触基础架构层存储库即可。
我朋友的论点是他可以用同样的方式构建一个三层应用程序:
- 商务
- 数据
- 演示文稿
他将创建业务模型(如领域模型)并让数据层中的存储库返回这些业务模型。然后他会调用业务层,也就是数据层。我告诉他这种方法的问题在于它是不可测试的。当然,你可以编写集成测试,但你不能编写真正的单元测试。你能看到他提出的 3 层方法的任何其他问题吗(我知道有,因为为什么 DDD 会存在其他问题?)。
编辑:他没有使用 IoC。他的示例中的每一层都相互依赖。
【问题讨论】:
-
领域驱动设计和分层架构似乎与您的争议无关(据我了解,它们是相互正交的)。如果你去掉首字母缩略词,你真正不同意的是什么?编码到接口和依赖注入?
-
“编辑:他没有使用 IoC。他的示例中的每一层都相互依赖。”仍然可以使用 Mockito 进行测试。所以它不是一个或另一个。更多关于一个或一组认为更清洁、设计良好且更易于维护(作为比较级别,而不是其他完全不可维护的代码)的代码
标签: domain-driven-design data-access-layer n-tier-architecture