【问题标题】:What does Client mean in Repository Pattern of DDD?客户端在 DDD 的存储库模式中是什么意思?
【发布时间】:2020-03-07 05:47:44
【问题描述】:

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

我不确定他们提到“客户”指的是什么?
这里的“客户”是什么意思?

数据库是基础架构的一部分。一个糟糕的解决方案是 客户了解访问数据库所需的详细信息。 例如,客户端必须创建 SQL 查询来检索 想要的数据。数据库查询可能会返回一组记录, 暴露更多的内部细节。当许多客户 必须直接从数据库中创建对象,事实证明这样的代码分散在整个域中。

【问题讨论】:

    标签: domain-driven-design repository-pattern ddd-repositories


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      • 2013-05-27
      • 2023-03-30
      • 2013-05-03
      • 2011-07-05
      • 2010-12-22
      相关资源
      最近更新 更多