2

参加与其他几个班级有关系的班级。第一类可以看作是聚合(根)。从服务层的角度来看,如何最好地拆分调用?

  1. 调用整个对象图的聚合存储库,并从该特定存储库调用其他存储库来处理关系的保存(每种类型的类一个存储库。
  2. 调用整个对象图的聚合存储库并在一个方法中处理所有内容(因此将所有关系保存在同一方法中)。
  3. 在服务层中,调用聚合的存储库,然后直接从服务层调用相关类的存储库。
  4. 在服务和存储库之间添加一个额外的层,并在该额外层中执行选项 3 中的操作。

我已经在生产代码中看到了所有 3 种可能的解决方案,但我对最干净的解决方案以及选择这种方法的原因很感兴趣。

4

1 回答 1

0

对我来说,这将是选项 1 和 2 之间的选择(我喜欢让“上层服务层”尽可能简单)。

我会选择哪一个将取决于如何使用聚合的各个类型;如果它们总是(至少目前)用作这个聚合的一部分而不是独立的,我可能会让聚合存储库也处理它们(但可能仍然在单独的方法中),但如果各个部分也可以单独使用(或作为其他聚合的一部分)我可能倾向于为它们提供单独的存储库对象,并从聚合存储库调用这些存储库。

于 2010-08-23T20:35:55.360 回答