我一直在阅读很多关于依赖注入(inject)的内容,认为它可能是一种非常先进的编程方式,但我看不出仅仅避免全局状态之间的区别,因为当没有全局状态时,你被迫传入所有依赖项到对象。
有人可以向我解释一下,因为我认为我可能错过了关于什么是依赖注入(inject)的要点吗?
最佳答案
使用依赖注入(inject)看起来就像使用 Windows 注册表一样。你用你想要的东西加载注册表,然后将它们拉出来并在某个模块中使用它们。
但是,它破坏了面向对象的代码。
假设您的依赖注册表中有 20 个项目。数据库、记录器、异常处理程序等。
现在在给定的模块中,您不知道您的模块使用了哪些依赖服务。您的上下文会进一步丢失,因为您在运行代码时不知道依赖项注册表中的内容!
我在这里看不到任何好处。它只是使调试变得不可能。
关于dependency-injection - 依赖注入(inject)与不使用全局变量有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5440800/