gpt4 book ai didi

oop - 域驱动设计中多个表的单个存储库与多个存储库

转载 作者:行者123 更新时间:2023-12-02 00:57:10 24 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

3年前关闭。




Improve this question




我有两张表来获取标准订阅者与高级订阅者的计费费率,即 StandardRate 与 PremiumRates。这些值由产品经理填充。

表访问是通过 ORM 控制的,即 StandardRateOrm 和 PremiumRateOrm。我正在尝试设计一个存储库来访问 ORM 并根据某些标准检索费率。例如,用户的邮政编码范围。

我无法具体设计是否需要两个存储库类与单个存储库类。

选项 1:
我知道存储库隐藏了 DDD 中的存储层,因此只有一个名为 RateRepository 的存储库足以访问任一 ORM 并返回结果。目前,结果是值对象,因为它是只读访问。

选项 2:
但是,在考虑 SOLID 原则时 (https://en.wikipedia.org/wiki/SOLID)。创建一个名为 RateRepository 的父类和两个子存储库类(StandardRateRepository 和 PremiumRateRepository)是有意义的,它们分别访问其相应的 ORM,因为它遵循:

  • 单一职责:存储库只有一个理由
    改变。
  • 开/关
  • 接口(interface)隔离

  • 使用选项 1,感觉界面不干净,也不符合 SOLID 原则。使用选项 2,感觉就像是在域层中暴露了存储细节。

    是否有任何已知的设计模式/规则来解决这个问题?

    最佳答案

    不看领域实体图很难给出好的答案。

    通常,费率将是值(value)对象,因为费率通常由它们的值而不是身份定义。例如:任何一美元钞票都是一美元钞票。仅仅因为费率可以保持不变,并不一定意味着他们需要一个存储库。存储库通常用于处理聚合根实体。

    即使在您的域中,利率是实体,也应该使用有能力的 ORM 或自定义数据映射器从对象模型中抽象出数据库详细信息(不同利率的单独表)。

    关于oop - 域驱动设计中多个表的单个存储库与多个存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53492903/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com