加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

依赖倒转的三种写法[PHP]

发布时间:2020-12-14 01:09:30 所属栏目:百科 来源:网络整理
导读:依赖倒转 依赖的三种写法: 构造函数传递依赖对象 interface IDriver { public function drive();}interface ICar { public function run();}class Driver implements IDriver { protected $car; public function drive(){ $this-car-run(); } public functio
依赖倒转

依赖的三种写法:

构造函数传递依赖对象
interface IDriver {
    public function drive();
}

interface ICar {
    public function run();
}

class Driver implements IDriver {
    protected $car;

    public function drive(){
        $this->car->run();
    }

    public function __construct(ICar $Icar){
        $this->car = $Icar;
    }
}

class BMW implements ICar {
    public function run(){
        echo 'this is BWM running';
    }
}

class Client{
    public function __construct(){
        $san = new Driver(new BMW());
        $san->drive();


    }
}
$a = new Client();
Setter方法传递对象
interface IDriver {
    public function drive();
}

interface ICar {
    public function run();
}

class driver implements IDriver {
    protected $car;

    public function drive(){
        $this->car->run();
    }

    public function setter(ICar $ICar){
        $this->car = $ICar;
    }
}

class BMW implements ICar {
    public function run(){
        echo 'i have a bmw';
    }
}

class Client{
    public function __construct(){

        $san = new driver();
        $san->setter(new BMW());
        $san->drive();
    }

}
$a = new Client();
接口声明依赖对象
<?php

/**
 * User: didi
 * Date: 2017/8/29
 * Time: 上午7:31
 */
interface IDriver {
    public function drive(Icar $car);
}

interface ICar {
    public function run();
}


class Driver implements IDriver {
    public function drive(Icar $car){
        $car->run();
    }
}

class BMW implements ICar{
    public function run(){
        echo 'BMW RUN';
    }
}


class Client{
    public function __construct(){
        $san = new Driver();
        $bmw = new BMW();
        $san->drive($bmw);
    }

}


$a = new Client();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读