IOC

 

控制反转IoC-Inversion of Control

IOC简介:

  1.IOC是Spring Core最核心的部分

  2.依托一个类似工厂的IoC容器

  3.将对象的创建、依赖关系的管理以及生命周期交由IoC容器管理

  4.降低系统在实现上的复杂性和耦合度,易于扩展,满足开闭原则
  

 

在学习IOC之前呢需要先了解依赖注入(Dependency Inversion)

 以设计行李箱为例子

 

 

 

 首先我们要设计出轮子的大小,然后再根据轮子的大小去依次设计出底盘、箱体、行李箱的大小。

 这时候如果产品经理告诉我们轮子大小要修改变动,随之我们的后续都得重新设计。这样的话是不合理的。

 在开发中,一个底层的类可能牵扯到成百上千个类,若是因为底层类的一点变动而改动上层所牵扯到的类。那将是很大的一个问题。

--------------------------------------------

随后我们将轮子的大小改为传参的形式,那带来的变动也是不小的。这样的设计是不可维护的。

 

 

用依赖注入DI实现控制反转

  含义:把底层类作为参数传递给上层类,实现上层对下层的”控制”

 

我们根据行李箱来设计箱体,后根据箱体依次设计底盘、轮子。

此时依赖关系就倒置过来了。

 

 

 


 

 

 

 

 IOC有两种实现方式:

  1.DL实现方式:该方式对项目有侵入,需要用户对应API自己实现功能。(弃用)

  2.Di实现方式:该方式为现在的主流,被许多大型公司广泛应用,其实现方式也有(Set注入、接口注入、注解注入、构造器注入)

 

 


 

 

 

 

 


 

 

IOC容器的优势

  1.避免在各处使用new来创建类,并且可以做到统一维护
  2.创建实例的时候不需要了解其中的细节
  3.反射+工厂模式的合体,满足开闭原则

 

 

 

 

在我们要创建一个行李箱(Luggage)的时候,IOC会一层一层的往下寻找对应的依赖,当所有依赖找到后,再依次的往回构造注入。最终返回行李箱

 

posted @ 2021-02-07 12:03  _kerry  阅读(157)  评论(0编辑  收藏  举报