简单介绍IOC与DI:
- IOC(Inversion Of Control) 控制反转,一种设计思想。
- DI(Dependency Inject): 依赖注入,IOC思想的一种体现。
了解一下 依赖对象:
- 在程序里,业务的实现是依赖类与类的方法。将完成某种特定需求的对象定义为依赖对象。
如:在一个电商平台中,卖家可以进行商品上架、下架及发货等操作,程序员将商品的上架的业务功能封装到Sell类里,这个类在整个平台中实例化的对象我们称之为这个电商平台的一个依赖对象。
IOC控制反转:何为正转,何为反转?
- 传统的程序设计中,我们需要什么,就得去主动new出来,我们不仅关心需求,还关心new的这个具体过程。这个过程我们是主动去拿到我们想要的对象,我们暂且称这个过程为“正转”。
- 在IOC设计中,我们把需求告诉容器,让它去帮我们生产出来,我们不关心它是怎么生产的,但最后就是能拿到想要的对象。在这个过程中,我们把需求告诉容器,容器帮我们查找、注入到依赖的对象,我们不必手动去new我们需要的对象,我们需要的对象是被容器分配出来的、是依赖于我们给予容器的配置的。这个过程依赖对象的产出是被动的,并且由容器来控制,因而称之为“控制反转”。
DI依赖注入:依赖什么,注入到哪?
- 前面说了DI是IOC的具体实现。我们把需求交给容器,容器去帮我们产出想要的对象的过程,就需要用到依赖注入。
举个例子来理解:一个老板需要一批配件,这时老板对配件产生了依赖,从老板角度看,这批配件就是依赖。原本这些配件需要老板自己来做,但是很麻烦,所以老板把这些事交给工厂,告诉工厂要生产的配件的规格,工厂就生产出对应的配件出来。这个过程中,工厂就是充当上文提及的“容器”,去制造符合规格的配件并转交给老板。工厂生产出这一批配件交给老板我们比喻成依赖注入。(配件是依赖,转交是注入)