本文内容参考自:https://www.zhihu.com/question/32108444
如果A的一个功能的实现需要借助B,那么我们就称B是类A的依赖,如果在A类的内部去实力话B,他们之间就有较高的耦合。一旦B出现问题,就需要对A进行改造。如果依赖多了,就会出现牵一发而动全身的情况,程序机器难维护。
解决问题方法,就是把A对B的控制全抽出来,交给第三方去做。我们就称之为控制反转,控制反转是一种思路。依赖注入是一种典型的实现。实现依赖注入的方法可以是构造函数,属性,工厂方法。这样就极大程度的对类A和对类B进行了解耦。
本来我接收一个对象,现在我接收一个参数。如内部类,转化未一个方法的参数。
简单来说,A依赖B,但是A不控制B的创建和销毁。b的依赖控制全交给a之外的人来处理。这叫控制反转。
A依赖b ,必然有b的实例。
IOC Container
随着依赖的频繁的使用,要实现控制反转,会有很多重复的代码,就有了依赖注入,控制反转的组件和框架。