依赖反转原则:
设计模式中,为了遵循开闭原则,降低类与类之间的依赖关系,又设计了依赖反转原则:
高层不应该依赖于低层,两者都应该依赖于抽象;
抽象不依赖于具象,具象依赖于抽象。
理解:如一个项目中,高层的控制逻辑直接依赖于低层的数据库(sql),直接在逻辑类中创建数据库的对象,就形成了对数据库的紧密的依赖。那么如果用户需要换数据库(access),且高层逻辑完全不变,则更换数据库时,不仅要添加扩展代码,还要修改源码。但破坏开闭原则,不易维库不易扩展不易复用不灵活吧啦吧啦。所以应该将数据库设计个高层的抽象,即抽象类或是接口,高层依赖于抽象,根据需要从接口处创建需要的对象,低层sql和access都需要实现接口。这样添加access的时候,只需要扩展,不修改原来的代码即可。
反射:不用new来创建对象,而是用类加载器,根据字符串名创建类,创建类的权利转移了,不是调用者new而是交给了IoC(inversionofcontrol)控制容器来创建,是实现控制反转的关键技术。在java中,用Assembly.Load(集合名).CreateInstance(集合名.类名)来实现反射,对象是由IoC容器根据类加载器创建的。对象不是预先创建编译好,而是使用时动态创建。