控制反转(Inversion of Control, IoC)/ 依赖注入:
比如说,类A依赖于类B,A需要调用B的某一个方法,那么在调用之前,类A必须先获得B的一个示例引用。
通常我们可以在A中写代码来直接创建对象B。依赖注入则会接管对象B的创建工作。
这样做的好处在于,如果B是一个接口,那么B就可能有多种实现。在A中直接创建一个实现,会降低其可重用性。
IoC把示例的创建从A的实现代码中分离出来,交由容器来完成,类A的实现就不需要关心B的具体实现,也使得A具有更高的可重用性。
public class A { private class B b; public void m1 { // b = new B(); 对象的创建可以交由容器完成 // 这样A只要调用类B的方法m2()就好了,不需要关心B b具体是什么 b.m2(); } }