依赖注入与控制反转

     依赖注入(DI)和控制反转(IOC)两个的概念差不多,两者的概念看起来都很像,只不过依赖注入是理念,控制反转是实现,

可以看成是父子关系吧,依赖注入是父,控制反转是子。

     比如说一个人需要一把斧头,那么就要在人(person)里面new一个斧头(axe)的类,这样人就依赖斧头。

依赖注入与控制反转

这对开发来说是不太好的,因为万一有一天改需求,这个斧头不太好,我需要换一个厂家的,要河神的金斧头,那么我们需要改person类,万一别的地方又依赖于这个person类呢,又要去看别的地方是否有影响,这无穷无尽的,简直就是程序员的灾难。

所以我们就需要依赖注入,依赖注入有三种实现(抱歉,我学的比较少,只能看明白两种),构造方法注入和ioc注入。

   1、构造方法注入就是在外接实例化好对象传进去

依赖注入与控制反转

这样子的话东西就是从外面穿进来的,person类就不依赖axe,只依赖axe的抽象等。

    2、ioc容器解决依赖

    ioc容器的实现方法网上有https://www.jianshu.com/p/101821a3c34f

    简单来讲,就是把person的所有依赖都交给一个东西(ioc容器)去解决,person只依赖那个ioc容器,这样也降低了ioc容器的耦合度,当业务发生变化的时候,改ioc容器就可以了。