在过去的几天里,我阅读了很多关于依赖注入(inject)/控制反转/依赖反转的内容。我 想 那,现在我对这个概念的理解要好得多。但我仍然没有从维基百科得到以下信息:
A. High-level modules should not depend on low-level modules. Both should depend on abstractions. B. Abstractions should not depend upon details. Details should depend upon abstractions.
我理解高级模块的部分不应该
依赖于低级模块。但是,我对抽象和细节感到困惑。有人可以为我简化它们。谢谢。
最佳答案
这意味着如果细节发生变化,它们不应该影响抽象。抽象是客户查看对象的方式。对象内部究竟发生了什么并不重要。让我们以汽车为例,踏板、方向盘和变速杆是发动机内部发生的事情的抽象。他们不依赖于细节,因为如果有人将我的旧引擎换成新引擎,我应该仍然可以在不知道引擎改变的情况下驾驶汽车。
另一方面,细节必须符合抽象所说的。我不想实现一个突然导致刹车使汽车速度加倍的发动机。我可以以任何我想要的方式重新实现刹车,只要它们在外部表现相同。
关于dependency-injection - 抽象不应依赖于细节。细节应该取决于抽象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1710005/