IOC理解

作者: 云鲸鱼rain | 来源:发表于2019-03-10 14:43 被阅读0次

    Spring IoC有什么好处呢? - Mingqi的回答 - 知乎
    https://www.zhihu.com/question/23277575/answer/169698662

    Spring IoC有什么好处呢? - Eric的回答 - 知乎
    https://www.zhihu.com/question/23277575/answer/24259844

    都是大神啊,这回答,爆炸了。

    看了大神的回答,有种茅塞顿开的感觉,模模糊糊能感觉到什么,所以还是加上自己的理解,写点东西。

    IOC(Inversion of control)控制反转。
    DI(Dependency Injection)依赖注入。
    DIP(Dependency Inversion Principle)依赖倒置原则。
    根据依赖倒置原则提出了控制反转思想,根据控制反转思想实现了依赖注入方法。

    图片来源:[https://www.zhihu.com/question/23277575/answer/169698662]

    大神举了汽车轮胎的例子,我也想到一个我生活中的例子。
    其实就像做数学题一样:
    一道数学题摆在面前,解决思路大概就两种。
    1、一种是思考已知条件,推出隐藏的未知条件,接近答案,如果思路不对,回到上一步,继续走别的思路,这样做不好地方就在于:如果前面全部推断出来,最后一步拿出答案的时候思路错了,需要从头开始想。
    2、第二种是从问题出发,思考答案依赖什么条件得出,所依赖的条件又是依赖什么已知信息的出来的,最终推到已知信息。然后从已知信息写到答案,拿到想要的东西。

    控制反转的思想就是第二种解决数学题的方法。
    那这个例子里依赖注入又是什么呢
    就是具体的实现方法呀,把答案当成结论带入它所依赖的上一步条件,再把条件当成结论带入新的条件或者已知信息。

    控制反转容器呢?这就作弊了,把所有已知信息都注册到容器里面,由容器管理所有信息的依赖关系。当你需要知道答案的时候,直接向容器请求就行,容器已经把具体依赖的关系隐藏了起来,它会自己在注册的内容里面查询各个条件的依赖关系,找到所要的答案。我们没有必要知道这个过程。

    所以,考试时候,我们自己从答案出发,反推到已知信息,再从已知信息写到答案,这个解决过程,就是容器内部运行的过程。

    相关文章

      网友评论

          本文标题:IOC理解

          本文链接:https://www.haomeiwen.com/subject/pmeupqtx.html