工厂模式实现 class 位于 DDD 的干净架构中的什么位置
Where does a Factory pattern implementation class reside in clean architecture for DDD
我正在尝试使用具有以下三种项目类型的解决方案来遵循 DDD 的干净架构:
- MyProject.Core(实体、接口和服务)
- MyProject.Infrastructure(存储库、事件总线、记录器、工厂???)
- MyProject.API(控制器)
我有一个实现接口 IMapperFactory
的工厂 class MapperFactory
,其中 returns 一个基于 MapType
的 IMapperService
传入该工厂。 IMapperService
的实现位于核心层。
我正在努力理解工厂实现 classes 应该驻留的位置。我所有的存储库都在基础设施项目中实现,但域服务是在核心项目中根据干净的架构指南实现的(至少我是如何阅读它们的)
我觉得工厂的实现应该在核心项目中,因为那是它需要创建的所有实现所在的地方,但不确定。如果它应该在核心项目中,那么它应该是什么类型的对象,因为它不是实体、服务或接口?
MapperFactory
的目的是什么?
如果您的 MapperFactory
将数据库对象映射到(和从)域对象,那么它们应该转到 Infrastructure
项目(因为您的存储库实现驻留在那里)。
如果您的映射器将域对象映射到(和从)视图模型,那么它们驻留在 API 项目中。
如果您的模型驻留在 Core
服务中,例如您不想将您的域暴露给外界,并且您在服务中有一些 Contracts
可以与外部世界通信,那么您的 MapperFactory
应该位于 Core
中(假设 MapperFactory
将域映射到(和从)Contracts
.
我正在尝试使用具有以下三种项目类型的解决方案来遵循 DDD 的干净架构:
- MyProject.Core(实体、接口和服务)
- MyProject.Infrastructure(存储库、事件总线、记录器、工厂???)
- MyProject.API(控制器)
我有一个实现接口 IMapperFactory
的工厂 class MapperFactory
,其中 returns 一个基于 MapType
的 IMapperService
传入该工厂。 IMapperService
的实现位于核心层。
我正在努力理解工厂实现 classes 应该驻留的位置。我所有的存储库都在基础设施项目中实现,但域服务是在核心项目中根据干净的架构指南实现的(至少我是如何阅读它们的)
我觉得工厂的实现应该在核心项目中,因为那是它需要创建的所有实现所在的地方,但不确定。如果它应该在核心项目中,那么它应该是什么类型的对象,因为它不是实体、服务或接口?
MapperFactory
的目的是什么?
如果您的 MapperFactory
将数据库对象映射到(和从)域对象,那么它们应该转到 Infrastructure
项目(因为您的存储库实现驻留在那里)。
如果您的映射器将域对象映射到(和从)视图模型,那么它们驻留在 API 项目中。
如果您的模型驻留在 Core
服务中,例如您不想将您的域暴露给外界,并且您在服务中有一些 Contracts
可以与外部世界通信,那么您的 MapperFactory
应该位于 Core
中(假设 MapperFactory
将域映射到(和从)Contracts
.