我正在尝试遵循DDD,我有一个Question类和一个Feedback类等其他类。 我想要能够计算问题的数量,反馈的数量以及许多被视为元操作的其他内容。
这样的“元”方法应该与属于该类的其他方法放在同一个仓库中,还是应该放在MetaRepository中,在那里您有不同的元方法,可以查询数据库(在这种情况下,所有类都将混合)?
我正在尝试遵循DDD,我有一个Question类和一个Feedback类等其他类。 我想要能够计算问题的数量,反馈的数量以及许多被视为元操作的其他内容。
这样的“元”方法应该与属于该类的其他方法放在同一个仓库中,还是应该放在MetaRepository中,在那里您有不同的元方法,可以查询数据库(在这种情况下,所有类都将混合)?
在DDD中没有禁止为一个聚合使用多个存储库。您可以简单地拥有一个基本查询和生命周期方法的存储库(IQuestionsRepository),以及一个用于所谓的“元”或“统计”目的的单独存储库(IQuestionsStatistics)。在更大的领域中,遵循“每个聚合一个存储库”的原则可能会导致“方法爆炸”和SRP违规。遵循DDD不应违反基本的OOP原则。
这些问题(“有多少反馈?”)以及它们所指的数量是否是您领域的重要组成部分?
如果是,它们似乎是合理的查询,可以放在您的存储库中。毕竟,您的存储库的工作是回答关于其包含的聚合物的领域相关问题。
如果不是,例如,如果这只是偶然的东西,可能仅用于向用户显示,则这些问题可能属于应用程序服务,完全位于领域层之外。
我会坚持每个领域模型类使用一个单一的代码库,或者使用一个通用的代码库
就像您所描述的那样,我个人从未见过有人创建MetaRepository