dependency-injection - 依赖注入(inject)与不使用全局变量有何不同?

标签 dependency-injection

我一直在阅读很多关于依赖注入(inject)的内容,认为它可能是一种非常先进的编程方式,但我看不出仅仅避免全局状态之间的区别,因为当没有全局状态时,你被迫传入所有依赖项到对象。

有人可以向我解释一下,因为我认为我可能错过了关于什么是依赖注入(inject)的要点吗?

最佳答案

使用依赖注入(inject)看起来就像使用 Windows 注册表一样。你用你想要的东西加载注册表,然后将它们拉出来并在某个模块中使用它们。

但是,它破坏了面向对象的代码。

假设您的依赖注册表中有 20 个项目。数据库、记录器、异常处理程序等。

现在在给定的模块中,您不知道您的模块使用了哪些依赖服务。您的上下文会进一步丢失,因为您在运行代码时不知道依赖项注册表中的内容!

我在这里看不到任何好处。它只是使调试变得不可能。

关于dependency-injection - 依赖注入(inject)与不使用全局变量有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5440800/

相关文章:

symfony - 如何避免对来自不同 bundle 的实体的依赖

spring - 在应用程序启动时将实例注册为 'singleton' bean

dependency-injection - DDD : Service and Repositories Instances Injected with DI as Singletons

javascript - Karma jasmine 和 Angular Controller 使用 'Controller as' 语法(这而不是 $scope)

c# - 使用 Reuse.InWebRequest/Reuse.InThread 时使用 DryIoc 解析新实例

scala - Guice Multibinder 不适用于 Play 框架

c# - 在 ASP.NET Core 中通过依赖注入(inject)注册后,如何修改选项对象(保存配置设置)中的值?

java - Dagger:在提供的 pojo 上注入(inject)字段

c# - 来自特定程序集的 Unity DI 自动注册

Angular Testing : provide injected @Attribute in TestBed