• 依赖注入和控制反转


    前言

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

    内容

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

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

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


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

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

        还拿主板说事吧!

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


    2、依赖注入和控制反转


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

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

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



        

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


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

    小结

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


    感谢您的宝贵时间···

  • 相关阅读:
    图像不存在时,可用一张通用图片代替
    中英文并排
    ThinkPHP无限级分类
    跑数据示例一
    ThinkPHP项目笔记之RBAC(权限)补充篇
    ThinkPHP项目笔记之RBAC(权限)下篇
    ThinkPHP项目笔记之RBAC(权限)中篇
    ThinkPHP项目笔记之RBAC(权限)上篇
    ThinkPHP项目笔记之RBAC(权限)基础篇
    layDate/DatePicker日期时间空间
  • 原文地址:https://www.cnblogs.com/zhoulitong/p/6412401.html
Copyright © 2020-2023  润新知