}
如果老方确认小二和尚在练易筋经,就叫小三和尚。
老王类的代码修改如下所示:
public class Laowang {
public void mingling() {
Laofang.getSaodiseng().saodi();
}
}
测试类的代码不改变,如下所示:
public class Test {
public static void main(String[] args) {
Laowang laowang = new Laowang();
laowang.mingling();
}
}
老王现在是不是省心多了,他只管下命令,该叫谁去扫达摩院的地由他师弟老方去负责。
我们替老王想的这个办法就叫控制反转(Inversion of Control,缩写为 IoC),它不是一种技术,而是一种思想——指导我们设计出松耦合的程序。
控制反转从词义上可以拆分为“控制”和“反转”,说到控制,就必须找出主语和宾语,谁控制了谁;说到反转,就必须知道正转是什么。
你看,在紧耦合的情况下,老王下命令的时候自己要通过 new 关键字创建依赖的对象(小二和尚或者小三和尚);而控制反转后,老王要找的扫地和尚由他师弟老方负责,也就是说控制权交给了老方,是不是反转了呢?
03、依赖注入
依赖注入(Dependency Injection,简称 DI)是实现控制反转的主要方式: