小例子 理解 Laravel 中的 控制反轉模式

licheng發表於2018-03-14

Ioc (Inversion of Control) 控制反轉模式 又稱 (Depe-ndency Injection)依賴注入模式

控制反轉是將元件的依賴關係從程式內部提到程式外部來管理,而依賴注入是指元件的依賴通過外部以引數或其它形式注入

下面我將以一個簡單的例子來演示什麼是 Ioc 控制反轉

<?php

interface Visit
{
    public function go();
}

class Leg implements Visit       //行走介面
{
    public function go()
    {
        // TODO: Implement go() method.
        echo "walt to Tibet!!!";
    }
}

class Car implements Visit         //汽車介面
{
    public function go()
    {
        // TODO: Implement go() method.
        echo "drive car to Tibet!!!";
    }

}

class Train implements Visit        //火車介面
{
    public function go()
    {
        // TODO: Implement go() method.
        echo "go to Tibet by train";
    }
}

class Traveller                  // 旅行者類
{
    protected $trafficTool;

    public function __construct(Visit $trafficTool)
    {
        $this->trafficTool = $trafficTool;
    }

    public function visitTibet()
    {
        $this->trafficTool->go();
    }
}

$tra = new Traveller(new Car());

$tra->visitTibet();

Traveller 類的建構函式依賴了一個外部的具有visit介面的例項,而例項化Traveller時,我們傳遞了一個 $trafficTool 例項, 即通過依賴注入的方法解決依賴

相關文章