Domain driven design 工厂模式实现类在DDD的干净体系结构中位于何处

Domain driven design 工厂模式实现类在DDD的干净体系结构中位于何处,domain-driven-design,clean-architecture,Domain Driven Design,Clean Architecture,我尝试使用具有以下三种项目类型的解决方案,使用DDD遵循干净的体系结构: 核心(实体、接口和服务) MyProject.Infrastructure(存储库、事件总线、记录器、工厂??) MyProject.API(控制器) 我有一个工厂类MapperFactory,它实现了一个接口IMapperFactory,该接口基于传入工厂的mapperType返回IMapperService。IMapperService的实现位于核心层 我很难理解工厂实现类应该驻留在哪里。我的所有存储库都是在基础设

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

  • 核心(实体、接口和服务)
  • MyProject.Infrastructure(存储库、事件总线、记录器、工厂??)
  • MyProject.API(控制器)
我有一个工厂类
MapperFactory
,它实现了一个接口
IMapperFactory
,该接口基于传入工厂的
mapperType
返回
IMapperService
IMapperService
的实现位于核心层

我很难理解工厂实现类应该驻留在哪里。我的所有存储库都是在基础设施项目中实现的,但域服务是根据清洁体系结构指南在核心项目中实现的(至少我是如何理解它们的)


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

MapperFactory的目的是什么

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

若映射器将域对象映射到(或从)视图模型,那个么它们驻留在API项目中

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