【问题标题】:How orginise federative repository in DDD way?如何以 DDD 方式组织联合存储库?
【发布时间】:2018-02-14 15:01:00
【问题描述】:

我想创建所有类型反馈的一般列表 - FeedbackRepository 我已经有一些存储库:

  • FeedbackFromPhoneRepository(存储在数据库中)
  • FeedbackFromMailRepository(存储在 otrs 中)
  • FeedbackFromSiteRepository(存储在其他地方)

我的第一个想法是将这些存储库合并到 FeedbackRepository。 但是我发现当一个存储库可以访问另一个存储库时,这不是一个好方法。 在 DDD 实践中如何组织这个多个存储库的正确方法是?

【问题讨论】:

  • 为什么将反馈存储在不同的地方?
  • 您的实体是什么?反馈是只读的还是您可以 C/U/D 反馈?

标签: domain-driven-design ddd-repositories


【解决方案1】:

有很多方法可以解决这个问题,其中一种可能需要有关您设计的其余部分的更多信息。由于存储库是您存储信息的抽象,因此您可以拥有一个 FeedbackService 来提供对存储库的封装,例如

  IFeedbackService
  {
       IList<FeedBack> GetFeedBackFor(SomeFeedBackIdentifier id)
  }

您的实现可能具有所需的存储库(当然是注入的)并处理每个存储库的读取并整理响应。

虽然存储库的概念来自 DDD 世界,但没有什么不会延续到任何软件方法中。封装是一个重要的构造(至少在 OO 中),这就是你可以在这里做的——封装从许多地方读取的需求,并为服务的消费者提供一种很好的方式来做到这一点。

从 DDD 的角度来看,如果您的有界上下文对反馈是正确的,您可能需要考虑,但那是另一回事了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2010-11-24
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    相关资源
    最近更新 更多