依赖注入(Dependency Injection)和控制反转(Inversion of Control)
Dependency Injection & Inversion of Control是Martin Fowler在2004年所提出來的一个概念,Martin Fowler在这篇文章中指出,DI可以有三种形式来实现。这观念以后有Spring项目和Google实现出来,变成了Java Enterprise应用中不可或缺的一部分。
控制反转是一个重要的面向对象编程的法则来削减计算机程序的耦合问题。控制反转一般分为两个类型,依赖注入(Dependency Injection)和依赖查找(Dependency Lookup)。依赖注入应用广泛。
许多应用程序都是由两个或更多的类通过彼此的合作来实现业务逻辑,这使得每个对象都需要与其合作的对象(也就是它做依赖的对象)的引用。如果这个获取过程要靠自身实现,那么这将导致代码高度耦合并且难以测试。
应用控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用,传递给它。也可以说,依赖被注入到对象中。所以,控制反转是关于一个对象如何获取它所依赖的对象的引用——这个责任的反转。
IoC模式,系统中通过引入实现了IoC模式的IoC容器,即可由IoC容器来管理对象的生命周期、依赖关系等,从而使得应用程序的配置和依赖