领域驱动设计库
domain driven design repository
我正在从头开始学习 DDD 主题,在许多 DDD 示例中,我看到“存储库接口”位于域中。这个存储库的真正目的是什么 actually/what 它究竟是做什么的还是解决了什么?这与持久层实现是否对应或有某种联系?
谢谢。
Repository 接口位于Domain 层,Repository 本身在Infrastructure 层实现。在域层定义存储库接口允许在基础设施实现之间轻松切换,知道所有实现都遵循相同的接口。
最终,应用层将从基础设施层调用存储库实现。更进一步,您甚至可以定义一个基于 Repository 接口的 Application 接口,然后定义一个 Application 实现,您可以在其中从 Infrastructure 层注入选定的 Repository 实现。
What is real purpose of this repository actually/what does it do or solve exactly?
在领域驱动设计的上下文中,REPOSITORY 模式的参考文献是 Eric Evans 的“蓝皮书”第 6 章。那是他讨论 生命周期管理 模式的章节。
存储库是一个外观,旨在支持域实体(第 5 章模式)保存在某处内存集合中的错觉。因此,当您的流程需要一个实体时,它会向存储库询问它(通常会提供一个标识符作为提示)。
从 Parnas 1971 的意义上说,这是一种信息隐藏形式;我们可以在存储在内存中的临时集合和存储在磁盘、RDBMS 或 key/value 存储中的持久集合之间自由切换。只有存储库的实现需要担心管道的细节。
主要是为了分散开发人员的注意力;思想的分离允许开发人员在“业务规则”上工作以专注于领域,而不会被存储和检索的关注所分散。
我正在从头开始学习 DDD 主题,在许多 DDD 示例中,我看到“存储库接口”位于域中。这个存储库的真正目的是什么 actually/what 它究竟是做什么的还是解决了什么?这与持久层实现是否对应或有某种联系?
谢谢。
Repository 接口位于Domain 层,Repository 本身在Infrastructure 层实现。在域层定义存储库接口允许在基础设施实现之间轻松切换,知道所有实现都遵循相同的接口。
最终,应用层将从基础设施层调用存储库实现。更进一步,您甚至可以定义一个基于 Repository 接口的 Application 接口,然后定义一个 Application 实现,您可以在其中从 Infrastructure 层注入选定的 Repository 实现。
What is real purpose of this repository actually/what does it do or solve exactly?
在领域驱动设计的上下文中,REPOSITORY 模式的参考文献是 Eric Evans 的“蓝皮书”第 6 章。那是他讨论 生命周期管理 模式的章节。
存储库是一个外观,旨在支持域实体(第 5 章模式)保存在某处内存集合中的错觉。因此,当您的流程需要一个实体时,它会向存储库询问它(通常会提供一个标识符作为提示)。
从 Parnas 1971 的意义上说,这是一种信息隐藏形式;我们可以在存储在内存中的临时集合和存储在磁盘、RDBMS 或 key/value 存储中的持久集合之间自由切换。只有存储库的实现需要担心管道的细节。
主要是为了分散开发人员的注意力;思想的分离允许开发人员在“业务规则”上工作以专注于领域,而不会被存储和检索的关注所分散。