domain-driven-design - 工厂模式实现类在 DDD 的整洁架构中位于何处

标签 domain-driven-design clean-architecture

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

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

  • 我有工厂类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/

    相关文章:

    android - ContentProvider 放置在android clean architecture中

    java - 哪种设计模式最适合根据某些条件定义多个数据转换器?

    validation - 访问数据进行验证并使用DDD确定默认值

    .net - 如何使用 DDD 将 Active Directory 集成到 .NET 应用程序中?

    c# - `EqualOperator()` 和 `NotEqualOperator()` 方法如何在此 `ValueObject` 实现中工作(Microsoft 文档)?

    asp.net-core - 如果有 CQRS、DTO 和实体,如何验证输入数据?

    domain-driven-design - 在领域驱动设计应用中拉动刷新

    android - 整洁的架构登录流程

    domain-driven-design - DDD : Where to create entity objects?

    node.js - 如何在模块中构建nodejs应用程序?