到底什么是依賴注入

今天在我不斷的深入詢問下,AI用來一個很恰當(dāng)?shù)谋扔?,讓我搞懂了什么是依賴注入。就?dāng)于在【所依賴的對象】和【所要實現(xiàn)的對象】之間,加了一個中間層,用來管理所有的依賴。而你只需要和中間層對接即可。

下面是AI給我的解釋:

依賴注入(Dependency Injection, DI)通俗解釋

依賴注入的核心思想是:將對象的依賴關(guān)系從對象內(nèi)部移動到外部,由外部提供依賴。用一個現(xiàn)實世界的例子來解釋:


現(xiàn)實世界例子:點外賣

  1. 傳統(tǒng)方式(沒有依賴注入)

    • 你自己去廚房做飯(自己創(chuàng)建依賴)。
    • 你需要知道如何買菜、洗菜、切菜、炒菜(依賴的具體實現(xiàn))。
    • 如果你想吃披薩,你必須自己學(xué)會做披薩(依賴的創(chuàng)建和管理都在你內(nèi)部)。

    問題

    • 你被綁定在廚房里,無法專注于其他事情(緊耦合)。
    • 如果你想換一種食物(如漢堡),你必須重新學(xué)習(xí)如何做漢堡(修改代碼)。
  2. 依賴注入方式

    • 你點外賣(依賴由外部提供)。
    • 你只需要告訴外賣平臺你想吃什么(聲明依賴),外賣平臺會負責(zé)把食物送到你手里(依賴由外部提供)。
    • 你不需要知道食物是怎么做的(依賴的具體實現(xiàn)由外部管理)。

    優(yōu)點

    • 你可以專注于吃飯,而不是做飯(解耦)。
    • 如果你想換一種食物(如從披薩換成漢堡),只需告訴外賣平臺,不需要自己動手(依賴可以動態(tài)替換)。

代碼中的對應(yīng)關(guān)系

  • MyService 類。
  • 外賣平臺:Spring 容器(或其他依賴注入框架)。
  • 食物MyRepository 依賴。

代碼示例

public class MyService {
    private final MyRepository repository;

    // 依賴通過構(gòu)造函數(shù)注入
    public MyService(MyRepository repository) {
        this.repository = repository; // 外賣平臺把食物送到你手里
    }

    public void doSomething() {
        repository.saveData(); // 你吃飯
    }
}
  • 依賴注入:Spring 容器負責(zé)創(chuàng)建 MyRepository 實例并注入到 MyService 中(外賣平臺負責(zé)送餐)。
  • :只需要聲明依賴(告訴外賣平臺你想吃什么),不需要自己創(chuàng)建依賴(不需要自己做飯)。

總結(jié)

依賴注入就像點外賣:

  • :只需要聲明依賴(告訴外賣平臺你想吃什么)。
  • 外賣平臺:負責(zé)提供依賴(把食物送到你手里)。
  • 好處:你不需要知道食物是怎么做的(依賴的具體實現(xiàn)由外部管理),可以專注于吃飯(業(yè)務(wù)邏輯)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容