Gee*_*ekn 4 domain-driven-design clean-architecture
我尝试使用具有以下三种项目类型的解决方案来遵循 DDD 的干净架构:
我有一个工厂类MapperFactory,它实现一个接口,该接口根据传入工厂的参数IMapperFactory返回一个。的实现驻留在核心层。IMapperServiceMapTypeIMapperService
我正在努力理解工厂实现类应该驻留在哪里。我的所有存储库都是在基础设施项目中实现的,但域服务是根据干净的架构指南在核心项目中实现的(至少我是如何阅读它们的)
我觉得工厂的实现应该位于核心项目中,因为这是它需要创建的所有实现所在的位置,但不确定。如果它应该在核心项目中,那么它会是什么类型的对象,因为它不是实体、服务或接口?
小智 7
目的是什么MapperFactory?
如果您MapperFactory将数据库对象映射到域对象(或从域对象映射),那么它们应该进入Infrastructure项目(因为您的存储库实现驻留在其中)。
如果您的映射器将域对象映射到视图模型(以及从视图模型映射域对象),那么它们就驻留在 API 项目中。
如果您的模型驻留在Core服务内部,例如您不想将您的域暴露给外界,并且您有一些Contracts服务可以与外部世界进行通信,那么您MapperFactory应该驻留在内部Core(假设MapperFactory将域映射到(和来自)Contracts.