勇哥注:
这是知乎里一个人的困惑,答者回复非常好,特摘抄如下。
问题: 今天刚看了一下 依赖注入 的概念,大致就是说如果一个服务类 A 需要另外一个服务类 B 中的方法, 那就直接将这个 B 这个类注入到 A 这个类中,但是我一想,这不就是在 A 类中 new 一个 B 类吗?? 或者可以直接在 A 类的构造器中 new 一个 B 类,然后 A 类中的所有方法都可以使用这个属性。 依赖注入和这个有啥区别吗??
回复:
依赖注入和new一个实例的区别在于控制反转的思想。
在使用new一个实例的方式时,需要显式地创建和管理实例,并且需要自己定义和管理对象之间的关系。
这样会导致代码耦合度高,维护和测试成本也会很高。
而依赖注入则是一种控制反转的思想,它将对象的创建和管理交给了一个容器或者框架,
容器或框架负责创建和管理对象,并且自动注入对象之间的依赖关系,从而减少代码的耦合度,
提高代码的可维护性和可测试性。
通过依赖注入,程序员只需要定义对象的接口和依赖关系,而不需要显式地创建和管理对象。
容器或框架会负责实例化对象,并将依赖的对象注入到对象中,从而实现对象之间的解耦。
依赖注入可以提高代码的可维护性和可测试性,降低代码的耦合度,而new一个实例的方式则需要自己定义和管理对象之间的关系,
代码的可维护性和可测试性会变差。

