2

几个月来我一直在摸不着头脑,但我仍然能够令人满意地说服自己我有正确的答案。我们有一个非常典型的情况,即我们的应用程序的多个层之间存在依赖关系,其中每一层都在自己的程序集中。例如,我们的应用程序层使用存储库层来检索非常标准的数据。我的问题是,抽象(在这种情况下为接口)将存在于哪里,为什么?在给出的示例中,它应该进入应用程序层还是存储库层或单独的抽象程序集?

根据The Clean Architecture 描述中的图表和描述(不是我们特别遵守的),我将它们放在应用程序层中,以便所有依赖项都指向内部,但我不确定这是否正确。我已经阅读了很多其他文章并查看了无数示例,但是关于抽象应该存在于何处的推理方式却很少。

我见过这个问题,但我不相信它回答了我的问题,除非实际答案当然是没关系。

4

1 回答 1

2

之所以称为依赖倒置原则,是因为经典的从高层模块到低层的依赖方向倒置如下:

| HigherLevelClass -> RequiredInterface | <= LowerLevelClassImplementingTheInterface |

因此,反向依赖是从较低级别的模块指向您的较高级别模块所需的抽象。由于客户端模块(您的应用程序层)需要某种较低级别的功能,因此相关的抽象(您的存储库接口)放置在客户端模块附近。

我知道的所有描述都使用包结构来解释这一点。但是,我看不出为什么这对于模块或层不应该是正确的。

详情见:http ://en.wikipedia.org/wiki/Dependency_inversion_principle

于 2015-01-08T21:39:36.820 回答