Domain driven design 客户机在DDD的存储库模式中意味着什么?

Domain driven design 客户机在DDD的存储库模式中意味着什么?,domain-driven-design,repository-pattern,ddd-repositories,Domain Driven Design,Repository Pattern,Ddd Repositories,我一直在快速阅读一本书领域驱动设计 现在我已经进入了存储库模式 我不知道他们提到“客户”是指什么 这里的“客户”是什么意思 数据库是基础设施的一部分。一个糟糕的解决办法是 让客户端了解访问数据库所需的详细信息。 例如,客户端必须创建SQL查询来检索 所需数据。数据库查询可能会返回一组记录, 披露更多的内部细节。当许多客户 如果必须直接从数据库创建对象,那么这些代码就会分散在整个域中 存储库的客户端是一段代码(另一个类),通常是DDD/Onion体系结构上下文中的应用程序层。经验法则是:每个聚合根

我一直在快速阅读一本书领域驱动设计
现在我已经进入了存储库模式

我不知道他们提到“客户”是指什么
这里的“客户”是什么意思

数据库是基础设施的一部分。一个糟糕的解决办法是 让客户端了解访问数据库所需的详细信息。 例如,客户端必须创建SQL查询来检索 所需数据。数据库查询可能会返回一组记录, 披露更多的内部细节。当许多客户 如果必须直接从数据库创建对象,那么这些代码就会分散在整个域中


存储库的客户端是一段代码(另一个类),通常是DDD/Onion体系结构上下文中的应用程序层。经验法则是:每个聚合根1个存储库。如果聚合根是Order,其中包含OrderItem集合,则只创建OrderRepository并返回包含所有OrderItems的整个订单,而不延迟加载。现在,您的客户机(应用程序层代码)应该不知道存储库中是什么(基于文件、基于sql、基于http),您将其视为inmemory collection:repository.GetById(orderId),其中存储库是IOrderRepository。这意味着您可以随时轻松地将repo从内存中更改为sql,并且您的客户机代码(应用程序层)或任何使用存储库的类都不会受到影响,因此保留了Liskov替换原则