zoukankan      html  css  js  c++  java
  • php--->依赖注入(DI)实现控制反转(IOC)

    依赖注入(DI)实现控制反转(IOC)

    DI和IOC概念理解
    • 当一个类的实例需要另一个类的实例协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。而采用依赖注入的方式,创建被调用者的工作不再由调用者来完成,因此叫控制反转,创建被调用者的实例的工作由IOC容器来完成,然后注入调用者,因此也称为依赖注入。
    • 所以DI和IOC的关系就是IOC是一种思想,而DI是实现这种的思想的方法
    • 完成依赖注入需要三方参与:一个是某个对象;一个是IoC/DI的容器;另一个是某个对象的外部资源。 某个对象指的就是任意的、普通的PHP对象; IoC/DI的容器简单点说就是指用来实现IoC/DI功能的一个框架程序; 对象的外部资源指的就是对象需要的,但是是从对象外部获取的,都统称资源,比如:对象需要的其它对象、或者是对象需要的文件资源等等
    • 常规情况下的应用程序,如果要在A里面使用C,你会怎么做呢?当然是直接去创建C的对象,也就是说,是在A类中主动去获取所需要的外部资源C($c = new C();),这种情况被称为正向的。那么什么是反向呢?就是A类不再主动去获取C,而是被动等待,等待IoC/DI的容器获取一个C的实例,然后反向的注入到A类中,A类才能去调用。
    依赖注入的实现方式
    • 构造函数注入
    • setter方法注入
    • 据经验,一般通过构造函数注入的是强依赖关系的组件,setter方式用来注入可选的依赖组件。
    • 还有较多其它方式比如:属性方式注入,回调注入,普通方法注入等等
    实现

    个人实现的小案例源码:https://github.com/Frankltf/DI

    参考:https://segmentfault.com/a/1190000002424023

  • 相关阅读:
    佛经中的 云何梵 什么意思?
    论节拍器的重要性,一定要习惯使用。
    Linux文件系统分析
    uboot启动内核分析
    Linux内核启动流程分析
    Linux内核配置机制与编译过程分析
    Linux内核源码目录结构分析
    Kconfig文件分析
    Ubuntu下安装make
    Ubuntu下交叉编译器gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12的安装和使用
  • 原文地址:https://www.cnblogs.com/frankltf/p/8950835.html
Copyright © 2011-2022 走看看