我正在将 DDD 用于 3 个应用程序,这些应用程序通过 3 个不同的应用程序(工作流)服务使用相同的域层(域服务)。基础设施和 UI 层无权访问领域服务。我还通过域服务构造函数传递所有外部依赖项,例如存储库。那么,我需要在域服务上创建接口吗?请注意,我已经定义了应用程序服务的接口。
为什么要找理由?一旦您发现需要,您随时可以提取接口。
晚了 10 年,但也许有人看到这个答案:
六边形架构的主要目标是可扩展和可维护。当您在一个类中进行更改并且需要在许多类中进行更多更改时,这是不可扩展的。
为了解决这个问题,架构将最不稳定的类(基础设施,通常更改频繁)与更稳定的类(应用程序,很少更改和领域,从不更改)分开。并尝试稳定类不依赖于易失性类(例如,将易失性类作为稳定类的属性)。
这就是为什么你可以从易失性类中引用稳定类,但易失性类不能引用稳定类。
当您需要使用稳定类中的易失性类时会发生什么?例如,使用应用程序服务中的存储库。你可以直接引用它,所以你把一个接口放在领域层(接口很少改变),并在存储库层做一个存储库实现(实现可能经常改变)。因此应用程序服务依赖于领域接口,并且是所使用的基础设施实现。
您不需要在域服务上创建接口:
所以从没有接口的应用服务中引用领域服务是正确的,你不需要它。