领域驱动设计存储库

ber*_*add 3 domain-driven-design ddd-repositories

我正在从头开始学习 DDD 主题,在许多 DDD 示例中我看到“存储库接口”位于域中。该存储库的真正目的实际上是什么/它到底做什么或解决什么问题?这与持久层实现相对应或有某种联系吗?

谢谢。

Voi*_*son 5

该存储库的真正目的实际上是什么/它到底做什么或解决什么问题?

领域驱动设计背景下的存储库模式的参考文献是 Eric Evans 的“蓝皮书”的第 6 章。在这一章中,他讨论了生命周期管理模式。

存储库是一个外观,旨在支持域实体(第 5 章模式)保存在某个内存集合中的幻觉。因此,当您的流程需要一个实体时,它会向存储库请求该实体(通常提供一个标识符作为提示)。

从Parnas 1971 的意义上来说,这是一种信息隐藏形式;我们可以在存储在内存中的瞬态集合和存储在磁盘、RDBMS 或键/值存储中的持久集合之间自由切换。只有存储库的实现需要担心管道的细节。

其动机主要是为了分散开发人员的注意力;思想的分离使得致力于“业务规则”的开发人员能够专注于领域,而不会因存储和检索的问题而分心。