我正在尝试使用具有以下三种项目类型的解决方案来遵循 DDD 的干净架构:
我有工厂类
MapperFactory
实现接口(interface)IMapperFactory
返回 IMapperService
基于 MapType
传入工厂。 IMapperService
的实现驻留在核心层。我很难理解工厂实现类应该驻留在哪里。我所有的存储库都在基础设施项目中实现,但域服务是在核心项目中根据干净架构指南实现的(至少我是如何阅读它们的)
我觉得工厂的实现应该在核心项目中,因为这是它需要创建的所有实现所在的地方,但不确定。如果它应该在核心项目中,它会是什么类型的对象,因为它不是实体、服务或接口(interface)?
最佳答案
MapperFactory
的目的是什么?
如果您的 MapperFactory
将数据库对象映射到(和来自)域对象,然后它们应该转到 Infrastructure
项目(因为您的存储库实现驻留在那里)。
如果您的映射器将域对象映射到(和从) View 模型,那么它们位于 API 项目中。
如果您的模型位于 Core
服务,例如您不想将您的域暴露给外部世界并且您有一些 Contracts
在与外部世界通信的服务中,然后您的MapperFactory
应位于 Core
内(假设 MapperFactory
将域映射到(和来自)Contracts
。
关于domain-driven-design - 工厂模式实现类在 DDD 的整洁架构中位于何处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58252771/