【发布时间】:2013-01-08 20:18:33
【问题描述】:
在我发现这个article 之前,我不知道角色特定的存储库:
而不是一个包罗万象的存储库,它公开了 sun,我们也可以应用接口隔离原则 对于基于角色的接口,并定义只公开什么的接口 一类需要。
public interface IProductRepositoryForNewOrder { Product[] FindDiscontinuedProducts(); }单个存储库实现实现所有产品存储库 接口,但只有所需的单个方法被公开和使用 调用者。
a) 两者的区别在于 Specific Repositories 我们每个 Aggregate Root 有一个特定的合约,而 Role-Specific Repositories 我们可以有多个合约Aggregate Root,这些合约中的每一个都是针对在 Aggregate Root 上运行的特定调用者的需求量身定制的?
b) 在您看来,这两种模式各自的优缺点是什么?
谢谢
更新:
昨天我发现了你的answers 之一,你认为应该使用角色特定的存储库模式:
“另一种选择是使用 lambda 代替 OrdersSelectorService。 如果 lambda 在您的语言中不可用,那么它应该是 界面。通过 OrderRepository 的好处是基于 接口隔离原则,其目标是减少 不必要的耦合。对客户需求的行为不太可能 OrderRepository 上的所有方法,相反它需要一个特定的 函数,所以要明确。”
为什么在上面的摘录中你提倡使用角色特定的存储库模式,但在这里你似乎建议只在特殊情况下使用它。另一个主题中的示例是否是特殊情况(除此之外 - 我绝不是说您在自相矛盾,我只是看不出这两个示例在使用或不使用角色特定模式方面有何不同) ?
【问题讨论】:
标签: design-patterns domain-driven-design repository-pattern