依赖注入和控制反转

前言

    还是从上次机房合作验收说起,其中一个特别厉害的师姐提到了依赖注入和控制反转,刚刚听到这个的时候,感觉很熟悉,就是不知道在哪里看到过,想起了米老师说的那句话,“不怕不知道,就怕不知道”,不怕不知道它,就怕遇到了不知道它是什么意思,我可是上升到了不知道的第二个阶段。废话不说了,直奔主题吧。

内容

    记得在哪见过,就去找设计模式了,看到了依赖倒转(倒置)原则,瞬间就想起了一句经久不衰的话:高层模块不应该依赖底层模块,两个应该都依赖抽象;抽象不应该依赖细节,细节应该依赖抽象。

  • 例子:电脑PC的主板不依赖CPU、硬盘、内存条等。PC主板只负责提供对外扩展的接口,PC主板不依赖具体实现。

1、可是这个原则和师姐说的又有什么关系呢?


    依赖注入(Dependency Injection)简称:DI

    控制反转(Inversion of Control)简称:IOC

    还拿主板说事吧!

    图中主板负责抽象各个部件的信息,给出接口,供其他部件依赖连接使用。这里主板相当于高层模块,硬盘、CPU、内存条等相当于底层模块。高层模块定义了接口供底层模块使用。主板并不依赖哪个部件(CPU、硬盘等),只需定义好部件的参数给出接口即可。这里体现了依赖倒置原则,它转换了依赖,高层模块不依赖底层模块的实现,而底层模块依赖于高层模块定义的接口。


2、依赖注入和控制反转


    需要的参与者有:对象、容器、资源

    依赖注入:对象依赖容器创建并注入它需要的外部资源;

    控制反转:容器控制对象,由容器反向的向对象注入对象所需要的外部资源。



    

    利楠还是那么会给例子,相当于容器就是VS环境,那些控件就相当于资源,一开始对象上来想实现一个功能,然后就自己去创建实例注入资源。如果多个对象也想实现该一样功能,那么就会导致,创建了同一种但是多个该类资源,严重占用内存,这就是依赖注入;控制反转,相当于VS相当于容器,对象想实现一个功能,需要资源C,VS去工具箱去获取相应的资源C(控件),注入给对象。


    以上只是一些理论方面的解释,后期会给大家一些代码的体现。以上只是本菜鸟的一些见解,还望大家多多指正。

小结

1、有些东西还是得近距离了解,光远看还是不够的。


感谢您的宝贵时间···

原文地址:https://www.cnblogs.com/zhoulitong/p/6412401.html