美文网首页
依赖注入(DI)

依赖注入(DI)

作者: 该死的金箍 | 来源:发表于2024-03-08 14:27 被阅读0次

依赖注入(Dependency Injection,简称 DI)是一种软件设计模式,用于解耦组件之间的依赖关系。在传统的程序设计中,组件通常会直接创建和管理它们所依赖的对象,这会导致组件之间的紧耦合,使得代码难以测试、修改和维护。而使用依赖注入可以通过将组件的依赖项从组件内部移到外部管理,从而解耦组件之间的关系。

在依赖注入中,组件不再负责创建或管理它们所依赖的对象,而是通过外部的方式将依赖项注入到组件中。这样做有几个优点:

松耦合:依赖注入使得组件之间的依赖关系变得松散,从而使得代码更易于理解、修改和维护。

可测试性:由于依赖项是通过参数传递或者其他外部方式注入的,因此可以轻松地替换依赖项,从而方便进行单元测试和集成测试。

可重用性:依赖注入可以提高组件的可重用性,因为组件不再与特定的实现绑定,而是依赖于抽象接口,从而使得它们可以在不同的上下文中被重用。

依赖注入可以通过构造函数注入、属性注入或者方法注入等方式实现。其中,构造函数注入是最常见的方式,它通过在组件的构造函数中接受依赖项作为参数来实现注入。

高阶用法

/**高阶DI**/

//创建一个容器

class container
{
    public $instance = [];
    public function __set($key, $value)
    {
        $this->instance[$key] = $value;
    }
    //这里是测试__get方法用  注释掉 
    //public function __get($key)
    //{
        // return empty($this->instance[$key]) ? "null" : $this->instance[$key];
    //}
}

class adapter
{
    public $name = '我是调度器';
}
$container = new container();
$container->adapter = new adapter();
class autoFelix
{
    private $container;
    public function __construct(container $container)
    {
        $this->container = $container;
    }
    public function who($class)
    {
        return $this->container->instance[$class]->name;
    }
}

$autoFelix = new autoFelix($container);
$who = $autoFelix->who('adapter');
var_dump($who);

相关文章

  • 开源项目的依赖注入

    开源项目的依赖注入 依赖注入概念 依赖注入(DI:Dependency Injection): 依赖注入方式: B...

  • DI(依赖注入)

    一、依赖注入 DI(Dependency Injection 依赖注入)等同于IOC控制反转。使用DI让有依赖关系...

  • 初识Spring架构

    对Spring的了解 依赖注入DI(Dependency injection) DI分为依赖和注入 那怎么将对象注...

  • Dagger2常用注解诠释

    依赖注入 控制反转(IoC)与依赖注入(DI)浅谈依赖注入理解依赖注入(IOC)和学习Unity Gradle配置...

  • Angular 依赖注入

    Angular 依赖注入 依赖注入:Dependency Injection 简称DI 控制反转:Inversio...

  • Spring IOC容器

    由于Spring是采用依赖注入(DI)的方式来实现IOC,所以本文将IOC和依赖注入(DI)等同看待,主要讨论依赖...

  • Dependency injection(DI,依赖注入)和IO

    解释一下(DI,依赖注入)和IOC(Inversion of control,控制反转)? 依赖注入DI是一个程序...

  • 控制反转

    什么是控制反转(IOC),什么是依赖注入(DI)?问题:什么是控制反转(IOC),什么是依赖注入(DI)?IOC:...

  • 浅谈ASP.NET Core中的DI

    DI的一些事 传送门马丁大叔的文章 什么是依赖注入(DI: Dependency Injection)? 依赖注入...

  • 第三章 在spring中引入IoC和DI

    概念关系 控制反转(IoC) VS 依赖注入(DI) 控制反转可以分为两种子类型:依赖注入(DI)和依赖查找 1....

网友评论

      本文标题:依赖注入(DI)

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