【发布时间】:2018-11-27 04:43:32
【问题描述】:
我有两张表来获取标准订阅者与高级订阅者的计费费率,即 StandardRate 与 PremiumRates。这些值由产品经理填充。
表访问是通过 ORM 控制的,即 StandardRateOrm 和 PremiumRateOrm。我正在尝试设计一个存储库来访问 ORM 并根据某些标准检索费率。例如,用户的邮政编码范围。
我无法具体设计是否需要两个存储库类与单个存储库类。
选项 1: 我知道存储库隐藏了 DDD 中的存储层,因此只有一个名为 RateRepository 的存储库足以访问任一 ORM 并返回结果。目前,结果是值对象,因为它是只读访问。
选项 2: 但是,在考虑 SOLID 原则时 (https://en.wikipedia.org/wiki/SOLID)。创建一个名为 RateRepository 的父类和两个子存储库类(StandardRateRepository 和 PremiumRateRepository)是有意义的,它们分别访问其相应的 ORM,因为它遵守:
- 单一职责:存储库只有一个理由 改变。
- 打开/关闭
- 接口隔离
使用选项1,感觉界面不干净,也不符合SOLID原则。使用选项 2,感觉就像是在域层中暴露了存储细节。
是否有任何已知的设计模式/规则可以解决这个问题?
【问题讨论】:
-
什么代码使用这些Value对象?
标签: oop domain-driven-design repository-pattern solid-principles