领域模型可以知道存储库吗?

red*_*edi 5 domain-driven-design ddd-repositories

可能对于某些域逻辑实现实体需要访问repo以更新/删除self或任何相关实体.听起来不对吗?

Bor*_*hov 6

不,它没有,至少对于标记为"域驱动设计"标签的问题.当然,Active Record模式有权在某些系统中存在,有些人发现强耦合很有用,但在DDD中,建议的方法是明确使用存储库:

Evans DDD,第152页:对于需要全局访问的每种类型的对象,创建一个对象,该对象可以提供该类型的所有对象的内存中集合的错觉.«...»仅为实际需要直接访问的AGGREGATE根提供存储.让客户专注于模型,委托所有对象存储和访问存储库.

因此,在DDD中,存储库不仅封装了访问数据库所需的基础结构代码,而且还包含了必须存储和加载对象的整个想法.

如果你正在做一些其中涉及节约,并从数据库加载复合动作,那么服务是必须的引用是最好的人选.