Spring Framework之IOC
1、耦合度
耦合度(Coupling)是对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。
降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的“牵一发动全身”的水波效应,保证系统设计顺利进行。程序之间耦合度降低会大大节约维护成本。
2、IOC
IOC(Inversion of Control),即“控制反转”,是一种设计思想,其产生就是为了程序模块间的解耦。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试,且维护成本高;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。
之所以称为控制反转,是因为将对象的创建和关联交由IOC容器来完成,而程序本身只需要专注于业务逻辑。
3、IOC实现
DI(Dependency Injection),即“依赖注入”,是控制反转的实现方法。理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”:
●谁依赖于谁:应用程序依赖于IoC容器;
●为什么需要依赖:应用程序需要IoC容器来提供外部资源;
●谁注入谁:IoC容器中注入应用程序依赖的某个对象;
●注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。
总结:IOC就是通过DI把应用程序所需对象注入到IOC容器中,最要目的就是解耦、解耦、解耦!