什么是IOC?
通常我们在写代码的时候,需要用到什么对象,就会直接去new一个对象来使用,这种方式确实好用,但是一旦项目的代码量上来,一旦项目中一个文件迭代或者修改,其他文件也需要去修改,当代码量大的时候,需要修改的地方也会很多,因此极大的降低了代码的可维护性。这时候IOC技术被提出。
IOC,即Inversion of Control,又叫控制反转,它是一种设计模式,用于解耦组件之间的依赖关系。在传统的编程中,组件之间的依赖关系通常是硬编码的,这种设计方式会导致代码的可维护性和可扩展性都很差。而通过IOC模式,应用程序的控制权被反转,即由框架负责将依赖关系注入到组件中,从而实现组件之间的解耦。这样设计的好处是可以更容易地替换、修改和测试组件,提高了代码的可维护性和可扩展性。目前,Spring框架就是一个典型的IOC框架。
IOC的优缺点是什么?
优点
实现组件之间的解耦,提高程序的灵活性和可维护性。
缺点
1、创建对象的步骤变复杂了,不直观,当然这是对不习惯这种方式的人来说的。
2、因为使用反射来创建对象,所以在效率上会有些损耗。但相对于程序的灵活性和可维护性来说,这点损耗是微不足道的。
3、缺少IDE重构的支持,如果修改了类名,还需到XML文件中手动修改,这似乎是所有XML方式的缺憾所在。
依赖注入与控制反转怎么理解
通常在提到IOC的时候,即会提到“控制反转”也会提到“依赖注入”,那么什么是控制反转以及依赖注入呢?
控制反转:前面提到,当我们在写代码时需要用到一个对象来实现某种功能时,就需要new一个对象,这种方法对后期的迭代非常不友好,因此,控制反转在这里就体现出了它的价值。控制反转即获取对象的过程被反转了,我们不再需要自己去new对象,而是由IOC容器为我们提供。
依赖注入:上面提到,需要对象的时候我们不再需要自己去new一个对象,而是由IOC容器为我们提供,提供对象的过程即为依赖注入。
由此我们可以得出,依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情。
IOC原理是什么?
IOC利用的是反射技术和工厂模式,反射原理使得我们通过对象的描述信息可生产出完整的对象,工厂模式使得IOC代码更加松耦合更加合理的生产Bean对象。
IOC的java实现
首先创建UserService接口并且创建UserServiceImpl实现接口中的方法。
<