控制反转IOC-Inversion of Control
-
依托一个类似工厂的Ioc容器
-
将对象的创建、依赖关系的管理以及生命周期交由Ioc容器管理
-
降低系统在实现上的复杂性和耦合度,易于扩展,满足开闭原则
依赖注入DI
用依赖注入DI来实现控制反转
含义:把底层类作为参数传递给上层类,实现上层对下层的控制
代码实现;
依赖注入的方式:
-
Setter
-
Interface
-
Constructor
-
Annotation
依赖倒置原则、IOC、DI、IOC容器的关系
容器管理着bean的生命周期,控制着bean的依赖注入
IOC容器的优势:
-
避免在各处使用new来创建类,并且可以做到统一维护
-
创建实例的时候不要了解其中的细节
-
反射+工厂模式的合体,满足开闭原则:spring基本方法就是反射:
-
给出类名,来动态的生成对象,可以让对象在生成时被决定时哪一种对象
把工厂和对象生成独立分开。以前简单工厂,工厂方法,抽象工厂,说到底都是要产生一个产品的对象,这些代码都是写死在工厂中,假如需要成千上万,那么...而如果加上反射,就可以灵活的按需要生成对象
目的是提高灵活性和可维护性。
根据Luggage实例就会创建一个对象,需要查找config文件