反射:不用new来创建对象,而是用类加载器,根据字符串名创建类,创建类的权利转移了,不是调用者new而是交给了IoC(inversion of control)控制容器来创建,是实现控制反转的关键技术。在java中,用Assembly.Load(集合名).CreateInstance(集合名.类名)来实现反射,对象是由IoC容器根据类加载器创建的。对象不是预先创建编译好,而是使用时动态创建。
控制反转:利用反射技术,将对象创建权利转移给容器,一般结合配置文件,读取根据配置文件创建对象,省去了用来判断创建哪个对象的switch和if语句。
依赖注入:依赖注入也是实现控制反转的一个技术,其实我们在项目中也经常用到,即对象的实例化由别的类注入,可以是容器创建了然后注入,也可以是另外的类中创建后注入,不是自己创建,也是将控制权转自给了别人。可以用构造函数也可以用set函数,如:
public class Logic{
myDataBase db;
public Logic(myDataBase mdb){
db = mdb;
}
或
public void setMyDatabase(myDataBase mdb){
db = mdb;
}
......
}
参数是实例化后的对象,不是自己new的,称为依赖注入。