我创建了一个名为Question
的聚合类。其中包含对Answer
,Category
,Feedback
个对象的引用。 QuestionRepository应该是包含查询与问题相关的数据库的所有方法的类,还包括查询反馈,答案等的所有方法?或者它们应该是单独的类,例如QuestionRepository,FeedbackRepository等。
答案 0 :(得分:2)
从您解释的方式来看,我假设每个问题将有1个或更多答案,1个或多个反馈,问题属于特定类别
由于答案和反馈依赖于问题且不能独立存在,因此您可以为这3个实体设置一个QuestionRepository。
进入类别,类别更像是一个静态实体,IMO是一个静态列表,因此所有这些静态实体都可以在一个静态实体中组合在一起
答案 1 :(得分:1)
来自DDD web site:
对于需要全局访问的每种类型的对象,请创建一个对象 这可以提供所有内存收集的幻觉 那种类型的对象。
当您需要直接访问实体时,即当没有其他方便的方法来获取该实体而不是直接从持久性存储中获取实体时,就会使用存储库。相反,如果您认为实体大多数时间是通过遍历您已经掌握的另一个对象而轻易获得的,那么就不需要存储库。这里似乎是答案,类别和反馈。
通常,存储库仅用于聚合根,但可能存在例外情况。
我建议您在开始构建域模型之前阅读DDD蓝皮书或一些教程,以便对DDD构建块有基本的了解。