【问题标题】:Dependency Inversion Principle - Where should the interfaces go?依赖倒置原则——接口应该去哪里?
【发布时间】:2016-02-07 14:10:19
【问题描述】:

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

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

我见过this question,但我不相信它回答了我的问题,除非实际答案当然是无关紧要的。

【问题讨论】:

    标签: oop dependencies solid-principles dependency-inversion


    【解决方案1】:

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

    | HigherLevelClass -> RequiredInterface | <= LowerLevelClassImplementingTheInterface |
    

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

    我知道的所有描述都使用包结构来解释这一点。 但是,我认为模块或层不应该是这样的。

    有关详细信息,例如见:http://en.wikipedia.org/wiki/Dependency_inversion_principle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 2015-10-04
      • 2013-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多