在域驱动设计中,域层被认为与其他层没有依赖关系.即,存储库接口具有域层,而实现位于基础结构层.
但是,有界上下文(具有域infra)被部署为一个单元/可部署.这些层实际上是LOGICAL而不是PHYSICAL.那么在域和基础架构之间绘制这个虚拟层分隔符有什么真正的优势呢?
更新
在传统的分层方法中,域(服务)被认为依赖于infra层.然而,当谈到DDD /清洁/六边形体系结构时,域独立于其他层.然而,具有清洁/六边形方法的事件仍然是域层具有由infra层实现的接口.
因此,无论您使用DDD /六边形还是传统的分层方法,您仍然需要模拟存储库等,即域实际上不是独立的.你有什么意见?
解决方法
Domain Model pattern背后的假设是域模型要么是应用程序中最复杂的部分,要么是比其他部分更频繁变化的部分.
域模型模式试图通过使域模型独立于其他问题来解决这一问题.这样做的一个优点是,您可以单独测试域模型,而不依赖于它的依赖关系.您还可以更改域模型,而无需更改应用程序的其他部分.
这些是主要优点,但也有缺点.解耦可能会使代码库难以导航,并且还往往需要在层之间进行大量映射.是否this is worthwhile取决于具体情况(域模型有多复杂,您有哪些其他验证方案等)