工厂模式实现类位于 DDD 的干净架构中的什么位置

Gee*_*ekn 4 domain-driven-design clean-architecture

我尝试使用具有以下三种项目类型的解决方案来遵循 DDD 的干净架构:

  • MyProject.Core(实体、接口和服务)
  • MyProject.Infrastruct(存储库、事件总线、记录器、工厂???)
  • MyProject.API(控制器)

我有一个工厂类MapperFactory,它实现一个接口,该接口根据传入工厂的参数IMapperFactory返回一个。的实现驻留在核心层。IMapperServiceMapTypeIMapperService

我正在努力理解工厂实现类应该驻留在哪里。我的所有存储库都是在基础设施项目中实现的,但域服务是根据干净的架构指南在核心项目中实现的(至少我是如何阅读它们的)

我觉得工厂的实现应该位于核心项目中,因为这是它需要创建的所有实现所在的位置,但不确定。如果它应该在核心项目中,那么它会是什么类型的对象,因为它不是实体、服务或接口?

小智 7

目的是什么MapperFactory

如果您MapperFactory将数据库对象映射到域对象(或从域对象映射),那么它们应该进入Infrastructure项目(因为您的存储库实现驻留在其中)。

如果您的映射器将域对象映射到视图模型(以及从视图模型映射域对象),那么它们就驻留在 API 项目中。

如果您的模型驻留在Core服务内部,例如您不想将您的域暴露给外界,并且您有一些Contracts服务可以与外部世界进行通信,那么您MapperFactory应该驻留在内部Core(假设MapperFactory将域映射到(和来自)Contracts.