我的领域中有这两种结构:练习(带有主题、解决方案、难度扩展)和具有名称和父主题的主题。主题由其属性定义,因此从这个意义上说,它是一个值对象,但是即使我当前的数据存储与特定主题没有任何关联,该主题的存在仍然可能与域相关,因此它可以与任何事物无关地存在-所以它是一个实体吗?
另一个问题,假设我想要所有具有特定名称的现有主题,是否建议拥有一个 SubjectRepository (应该只有聚合根有关联的存储库)?
我的领域中有这两种结构:练习(带有主题、解决方案、难度扩展)和具有名称和父主题的主题。主题由其属性定义,因此从这个意义上说,它是一个值对象,但是即使我当前的数据存储与特定主题没有任何关联,该主题的存在仍然可能与域相关,因此它可以与任何事物无关地存在-所以它是一个实体吗?
另一个问题,假设我想要所有具有特定名称的现有主题,是否建议拥有一个 SubjectRepository (应该只有聚合根有关联的存储库)?
我见过一个关于地址类的类似 DDD 案例。
在领域方面,属性是有趣的部分,而不是 id。
然而,为了重用和编辑它们,它们需要是没有业务 ID/密钥的“实体”,只有一个主 ID/密钥。
为了支持 GUI 中的流畅管理,Address 被制作为带有“存储库”的“聚合根”。
你的情况听起来很相似。
如果你需要改变主题并且你需要跟踪它,它应该是一个实体。主题在领域中的存在在什么意义上是相关的?如果您无法以合理的方式将主题放入域中,那么它可能是您需要的服务。
关于你的第二个问题;是的,明智的做法是只拥有聚合根的存储库。