如何用最简单的方式解释依赖注入代码部分

本文通过一个PHP示例展示了依赖注入的概念,小明类(Ming)不直接创建手机对象,而是通过构造函数接收一个手机实例,实现了代码的解耦。无论是iPhone6还是iPhoneX,小明都可以正常操作,如阅读、玩游戏和抢红包。依赖注入允许在运行时更换不同的手机类,提高了代码的灵活性和可测试性。
摘要由CSDN通过智能技术生成
<?php
header("Content-type: text/html; charset=utf-8");

class Person
{

}

class Ming extends Person
{
    private $_name;

    private $_age;

    private $_phone;

    public function  __construct($phone)
    {
        $this->_name = '小明';
        $this->_age = 26;
        $this->_phone = $phone;
        echo "小明起床了 \n";
    }

    function read()
    {
        //……  省略若干代码
        $this->_phone->read($this->_name); //逛知乎
    }

    function  play()
    {
        //……  省略若干代码
        (new iPhone6())->play($this->_name);//玩农药

    }

    function  grab()
    {
        //……  省略若干代码
        (new iPhone6())->grab($this->_name);//抢红包

    }

}

$phone = new IphoneX(); //创建一个iphoneX的实例
if(!method_exists($phone,'li')){//如果iphone不可用,则使用旧版手机
    $phone = new Iphone6();
}

$ming = new Ming($phone);//小明不用关心是什么手机,他只要玩就行了。
$ming->read();




class Iphone{}

    class iPhone6 extends Iphone
    {

        function read($user = "某人")
        {
            echo $user. "打开了知乎然后编了一个故事 \n";
        }
        function play($user = "某人")
        {
            echo $user. "打开了王者农药并送起了人头 \n";            
        }
        function grab($user ="某人")
        {
            echo $user. "开始抢红包却只抢不发 \n";
        }
    }

    class iPhoneX extends Iphone
    {
        function li(){}

        function read($user = "某人")
        {
            echo $user. "xxxx打开了知乎然后编了一个故事 \n";
        }
        function play($user = "某人")
        {
            echo $user. "xxx打开了王者农药并送起了人头 \n";            
        }
        function grab($user ="某人")
        {
            echo $user. "xxx开始抢红包却只抢不发 \n";
        }

    }

如何用最简单的方式解释依赖注入?依赖注入是如何实现解耦的?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值