聚合、仓储和服务层

4

学习一个与其他几个类有关系的课程。第一个类可以被视为聚合根。从服务层的角度来看,如何最好地拆分调用?

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

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

1个回答

2
对我来说,选项1和2是可选的(我喜欢尽可能保持“上层服务层”简单)。
我选择哪个会有点取决于聚合类型如何使用;如果它们总是(至少目前)作为这个聚合的一部分使用而不是独立使用,我可能会让聚合存储库也处理它们(但可能仍然使用单独的方法),但如果单独的部分也可以独立使用(或作为其他聚合的部分),我可能更倾向于为它们创建单独的存储库对象,并从聚合存储库调用这些存储库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接