我一直在阅读很多关于依赖注入的思想,这可能是一些非常先进的程序编程方式,但是我看不到只是避免全局状态的区别,因为没有全局状态,那么你被迫通过所有的依赖对象
有人可以向我解释,因为我认为我可能会错过关于依赖注入是什么的观点?
依赖注入是关于去耦码.
当您通过传递参数避免使用全局变量时,您将解耦代码.您正在删除代码对全局变量的依赖关系.
def foo(arg): return ClassBar(arg).attr foo(1)
函数foo依赖于或紧密耦合到ClassBar.原因不太好,你会被迫更新foo的时候:
>构造ClassBar变化的参数
>你想把ClassBar改成别的东西
>另一段代码想从另一个对象访问attr
如果代码被重写:
def foo(instanceBar): return instanceBar.attr foo(ClassBar(1))
您已将联机推送到呼叫者.这从foo的定义中删除了依赖关系.在上述情况下,您无需更新foo.您的代码越多,解耦,您需要做的更少的代码更改.