定义
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。
传统意义上,Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。而控制反转的意思就是对依赖对象(如Class B)创建,从程序代码本身显式创建转移到了外部容器,由外部容器来负责创建。
实现方式
实现控制反转主要有两种方式:
- 依赖注入(Dependency Injection)
被动的接收对象,在类A的实例创建过程中即创建了依赖的B对象,通过类型或名称来判断将不同的对象注入到不同的属性中。“注入”是指将“依赖”传递给调用方的过程。在“注入”之后,调用方才会调用该“依赖”。传递依赖给调用方,而不是让调用方直接获得依赖,这个是该设计的根本需求。
- 依赖查找(Dependency Lookup)
主动索取相应类型的对象,获得依赖对象的时间也可以在代码中自由控制。