日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

10分钟理解依赖注入

發布時間:2025/3/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10分钟理解依赖注入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看到網絡上很多“依賴注入”解釋的話題,這篇博客呢也只是我自己的觀點,如果你有不同的觀點請拍磚,不用客氣。

業務場景

小明要去旅游,但是還未確定以什么方式出游,有可能是徒步旅行,也有可能是自駕游。

代碼演示

根據步行和駕車的速度來考慮距離旅游目的地的路程,所以這里定義了兩個屬性$speed和$distance。所有有了如下代碼:

interface travelInterface{public function __construct($speed, $distance);public function run(); }abstract class travel implements travelInterface{protected $speed; // 最高時速protected $distance; // 最遠路程public function __construct($speed, $distance){$this->speed = $speed;$this->distance = $distance;}}class drive extends travel{public function run(){echo "自駕游";} }class walk extends travel{public function run(){echo "徒步旅行";} }

如果是選擇自駕游

class human {protected $travel; // 出行方式public function __construct(){$this->travel = new drive(60,1000);}public function traveling(){$this->travel->run();} }$xiaoming = new human(); $xiaoming->traveling();

那么,如果需要換一種出行方式的時候,則需要修改human類。這里看起來修改非常簡單,但是我們實際項目中可能會夾雜著很多的業務邏輯一起修改。

就說下依賴注入的基礎方式

class human {protected $travel; // 出行方式public function __construct(travel $travel){$this->travel = $travel;}public function traveling(){$this->travel->run();} }$travel = new drive(60,1000); $xiaoming = new human($travel); $xiaoming->traveling();

什么是依賴注入

簡單的說:在A類中使用了B類的實例時,B對象的構造不是在A類某個方法中初始化的,而是在A類外部初始化之后以B類的對象傳入進來。這個過程就是依賴注入。

換一種通過配置文件來實現控制反轉

$config = ["travel" => drive::class, ];$travel = new $config["travel"](60,1000); $xiaoming = new human($travel); $xiaoming->traveling();

通過上面的方式,以什么方式旅行,只需要修改配置$config就行。

這在我們PHP里感觸不明顯,覺得修改$config和修改$travel = new drive(60,1000)差別不到,一方面是便于管理,另一方面是PHP的非編譯型的特性優勢。如果用Java來實現,感觸就非常明顯了,比如程序已經打包了,只需要修改配置文件,就可以控制類的依賴關系了。起到了解耦的作用。

雖然很多時候大家一說到控制反轉,依賴注入,就非要和說到反射,我覺得上面IOC只是一種思想,具體的實現方式,在不同的語言中有不同的表現形式。只要將這種依賴關系解耦出來,可以配置化就是IOC的實現了。

原文地址:https://mengkang.net/790.html




總結

以上是生活随笔為你收集整理的10分钟理解依赖注入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。