控制反转可以分开来解读,控制和反转-> 首先控制什么?对什么进行控制? 其实此处的控制指的是程序中的一些对象或者变量的控制权,在传统的程序中都是由应用程序自己控制对象创建或者变量赋值,这是一种主动式的控制,导致组件之间的完全耦合;现在将一些对象或者变量的创建控制权交给一个叫做Ioc容器的东西,由这个容器来控制应用程序中所需要的资源,这样就变成了被动的控制,对组件之间的关系进行解耦,所以所谓的反转就是将控制权由应用程序转交到Ioc容器。
2)依赖注入:同样将DI分开来解读,依赖和注入-> 首先依赖什么?谁依赖谁? 其实应用程序中所需要的资源创建和获取都是要依赖于Ioc容器,需要IoC容器装配类之间的关系,即应用程序依赖于IoC容器的装配功能;相反,注入就是IoC容器向应用程序中进行注入应用程序所需要的资源,由应用程序主动装配对象的依赖变应用程序被动接受依赖,所以IoC容器也叫DI容器。

综上所述,控制权的主动与被动式其实都是相对于(参考物)IoC容器来说的,也可以将IoC模式看做是工厂模式的升华,不同的是Spring中的控制反转所用到的是Java的“反射”技术,通过在XML文件中定义应用程序所需要的类,再由IoC容器根据xml文件创建这些对象。所以这也形成了工厂与对象生成这两者独立分隔开,目的就是提高灵活性和可维护性。之所以将对象生成放到xml文件中,如果我们想要换一个实现的类将变得很简单,只需要修改xml文件即可

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐