dependency-injection - 抽象不应依赖于细节。细节应该取决于抽象吗?

标签 dependency-injection inversion-of-control

在过去的几天里,我阅读了很多关于依赖注入(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/

相关文章:

c# - 在跨平台 (Xamarin) 应用程序中使用哪个 IoC 容器?

python - 如何将属性或对象注入(inject)到 Django Rest Framework 中的 View 中?

c# - 在 Winforms 中使用 IoC 时如何不绕过容器

c# - 存储库模式是如何真正完成的?

c# - ASP.NET Core 中的 IServiceProvider

grails - NullPointerException 与依赖注入(inject)

dependency-injection - 忍者: Constructor parameter

基于 MVC 的应用程序上的 Java 控制反转

c# - MVVM 光 ViewModelLocator : How to register Singleton ViewModel?

.net - IoC 容器,在编译时检查错误