依赖性倒置原则的第二个陈述

时间:2015-08-10 07:27:17

标签: oop design-patterns dependency-injection

依赖性倒置原则的第二个陈述指出:

  

"抽象不应该依赖于细节。细节应该取决于   抽象。"

'详细信息'在这种情况下意味着什么?

4 个答案:

答案 0 :(得分:1)

我更喜欢考虑抽象,例如“什么我想要的结果”,以及详细信息,如“ how < / strong>我想得到一个结果“。

原则意味着细节变化(例如,对象的生命周期,算法,精度等)不会改变抽象。

答案 1 :(得分:1)

抽象可以是行为方面,可以通过在接口方面消费代码来利用。任何高级别或低级别的类/代码都将使用抽象进行通信而不使用运算符。这些类被定义为“详细信息”。

答案 2 :(得分:0)

我对此的理解是,它与第一个原则密切相关,即高级模块不应该依赖于低级模块。两者都应该取决于抽象&#34;。这种方法的实现通常采用接口的形式,高级和低级类都使用这种接口相互通信。

嗯,这基本上已经遵循了第二个原则,因为我们的细节,即使用该接口的类的具体实现现在依赖于抽象,即类正在使用的接口。

此外,抽象现在不再依赖于类本身,因为它们现在位于类已经实现的接口之后,因此可以自由更改(当然除了签名)而不更改细节。必要的具体实施。

我不认为我已经像我一样清楚,但我希望这会有所帮助。

答案 3 :(得分:0)

让我尝试分享我的愿景

我相信这个术语通常用于两个组分A和B之间关系的上下文中,例如(A使用B,A - > B)。所以 just&#39;抽象&#39;对我来说毫无意义。有意义的是像A&#39;从A的角度抽象B&#39;

我尝试建立一个严格的定义(或多或少):

如果A使用B,那么从A的角度来看B的抽象是最小足够信息集必须了解B正确使用它。

  • 最小:如果你的抽象包含smth A可以省略 - 你的模块A正在使用B&#39的细节。这是不好的。 B的作者可能决定改变它,这将导致沟通中断。
  • 足够:如果A不能正确使用B而没有不属于你的抽象的东西,那就意味着它应该成为你抽象的一部分

我相信这个术语的主要目标(细节,抽象)是一种快速的方式来提及你可以(细节)改变而不破坏A-&gt; B通信或你无法改变的东西(抽象)在适当的A - > B用例。