控制反转(Inversion Of Control):
控制和反转,连个问题谁控制谁?谁反转了谁?
对象控制它内部创建的对象,反转是创建对象的方式被反转,传统是对象直接new一个需要对象,这种形式可以叫正转或不转,控制反转就是将依赖对象的创建交给三方完成,而不需要直接new所需对象。依赖注入就是IOC的一种具体表现。
依赖注入:
对象A依赖对象B,对象B不会在对象A中直接创建,而是将对象B引用传给对象A,这种形式就叫依赖注入。也就是对象A对对象B的依赖,通过注入形式获得持有。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class A{

IB b;

public A(IB b) {
}

public void doA(){
if (b != null) {
b.doThing();
}
}
}

class B implements IB{

@Override
public void doThing() {
System.out.println("B do some thing");
}
}

interface IB{
void doThing();
}

依赖注入在实际开发中非常常见,比如设置事件监听、网络回调等,策略模式也是一种依赖注入的思想。