解密依賴注入 (DI):讓程式碼更靈活的「外送」哲學

更新 發佈閱讀 2 分鐘

在軟體開發的世界裡,我們常聽到「低耦合、高內聚」這句準則,而依賴注入(Dependency Injection,簡稱 DI)正是實踐這個目標的核心技術之一。

什麼是依賴注入?

簡單來說,依賴注入是一種設計模式,它規定:一個物件不應該負責尋找或建立它所需要的其他物件(依賴),而是由外部主動將這些依賴「餵」給它。

我們可以拿「餐廳老闆」來做比喻:

  • 傳統做法(無 DI):老闆想賣漢堡,得自己去種小麥、養牛、蓋磨坊。老闆(主物件)必須親自參與所有食材(依賴)的生產過程。一旦想換成有機牛肉,老闆就得拆掉牛棚重新來過。
  • 依賴注入(有 DI):老闆只需要定義「我需要牛肉與麵包」,然後由專門的「供應商(DI 容器)」直接把食材送到廚房。老闆不需要知道牛怎麼養、麵包怎麼烤,他只需專心把漢堡做好。

為什麼開發者都愛 DI?

  1. 降低耦合度(Decoupling):物件與依賴之間不再是「生死相依」。當底層邏輯(如資料庫類型)改變時,頂層業務邏輯完全不需要修改。
  2. 單元測試的救星:如果程式碼寫死了要連接真實資料庫,測試會變得很麻煩。透過 DI,我們可以在測試時注入「假的」資料(Mock),讓測試環境既快速又乾淨。
  3. 提高程式碼重用性:元件變得像積木一樣,只要接口對了,就能在不同的專案中輕鬆組裝。

常見的注入方式

  • 建構子注入(Constructor Injection):最推薦的方式。在物件誕生(建構)的那一刻,就強迫把所有必需品交給它,確保物件一出生就是完整的。
  • 屬性注入(Property/Setter Injection):物件先建立,後續再透過設定屬性的方式把依賴塞進去。適合非強制性的選擇性依賴。

結語

依賴注入不僅僅是一種技術技巧,更是一種思維轉變。它讓我們從「親力親為」轉向「定義需求」,讓系統架構變得更像一個靈活的生態系,而非一塊鐵板。

留言
avatar-img
一位偉人的文庫
9會員
687內容數
無野可以講你知!哈哈哈!
一位偉人的文庫的其他內容
2026/04/11
在香港,我們常將「說話直接」與「有效率」掛鉤,但曾幾何時,這種效率已經演變成一種赤裸裸的無禮。無論是服務業的黑臉、職場上的刻薄,還是社交媒體上的惡毒公審,香港人的語言正失去溫度,變成了一種充滿侵略性的武器。 一、 把「粗魯」當作「真性情」 香港人性格中有一種特質:極度反感虛偽。然而,這種對「扮嘢
2026/04/11
在香港,我們常將「說話直接」與「有效率」掛鉤,但曾幾何時,這種效率已經演變成一種赤裸裸的無禮。無論是服務業的黑臉、職場上的刻薄,還是社交媒體上的惡毒公審,香港人的語言正失去溫度,變成了一種充滿侵略性的武器。 一、 把「粗魯」當作「真性情」 香港人性格中有一種特質:極度反感虛偽。然而,這種對「扮嘢
2026/04/11
曾幾何時,「香港人」標誌著亞洲的頂峰——那種融合了英國人的法理邏輯與東方人的勤奮靈活。但時至今日,當我們褪去那層名牌包裝與金融中心的濾鏡,剩下的卻是一群自負、刻薄且視野狹隘的「精神窮人」。這種從骨子裡散發出來的衰敗感,正讓香港人在國際舞台上顯得愈發渺小。 一、 守著廢墟的虛榮心 香港人最令人看輕
2026/04/11
曾幾何時,「香港人」標誌著亞洲的頂峰——那種融合了英國人的法理邏輯與東方人的勤奮靈活。但時至今日,當我們褪去那層名牌包裝與金融中心的濾鏡,剩下的卻是一群自負、刻薄且視野狹隘的「精神窮人」。這種從骨子裡散發出來的衰敗感,正讓香港人在國際舞台上顯得愈發渺小。 一、 守著廢墟的虛榮心 香港人最令人看輕
2026/04/11
劉慈欣在《三體》中提出的「黑暗森林」理論,正精準地描述了當下互聯網的崩塌與重建。如果說早期的互聯網是陽光普照的廣場,那麼今天的網絡則是由演算法、網暴與 AI 獵食者組成的幽暗森林。 一、 雙重森林:我們面臨什麼威脅? 互聯網黑暗森林 (Internet Dark Forest):由於網絡暴力、隱
2026/04/11
劉慈欣在《三體》中提出的「黑暗森林」理論,正精準地描述了當下互聯網的崩塌與重建。如果說早期的互聯網是陽光普照的廣場,那麼今天的網絡則是由演算法、網暴與 AI 獵食者組成的幽暗森林。 一、 雙重森林:我們面臨什麼威脅? 互聯網黑暗森林 (Internet Dark Forest):由於網絡暴力、隱
看更多
你可能也想看
Thumbnail
測試領域大家愛用的程式語言是 python,幾乎都會搭配一個測試框架 ,例如 pytest, IDE 用 Microsoft vscode,考慮團隊共同開發,工作站的作業系統會選 Linux。 如何配置上述條件的 debug 環境來提高開發效率可以分兩個部分來討論
Thumbnail
測試領域大家愛用的程式語言是 python,幾乎都會搭配一個測試框架 ,例如 pytest, IDE 用 Microsoft vscode,考慮團隊共同開發,工作站的作業系統會選 Linux。 如何配置上述條件的 debug 環境來提高開發效率可以分兩個部分來討論
Thumbnail
在程式世界裡,if 條件句是我們的好朋友,幫我們做各種決策。如果不注意可能會讓我們掉進小陷阱。文中透過幾個例子,在使用 if 時可能會遇到的一些常見問題,像是不必要的 if、過於複雜的條件、忘了用嚴格比較,還有嵌套太深的 if。透過這篇文章,你將學到如何避免這些小錯誤,寫出更乾淨、更有效率的程式碼。
Thumbnail
在程式世界裡,if 條件句是我們的好朋友,幫我們做各種決策。如果不注意可能會讓我們掉進小陷阱。文中透過幾個例子,在使用 if 時可能會遇到的一些常見問題,像是不必要的 if、過於複雜的條件、忘了用嚴格比較,還有嵌套太深的 if。透過這篇文章,你將學到如何避免這些小錯誤,寫出更乾淨、更有效率的程式碼。
Thumbnail
通過 memory_profiler 來測試優化前後的程式。 上一篇memory_profiler工具的說明介紹 以下是一個記憶體使用量較高的原始程式碼,接著對程式進行優化後,再次使用 memory_profiler 來比較優化前後的記憶體使用情況。
Thumbnail
通過 memory_profiler 來測試優化前後的程式。 上一篇memory_profiler工具的說明介紹 以下是一個記憶體使用量較高的原始程式碼,接著對程式進行優化後,再次使用 memory_profiler 來比較優化前後的記憶體使用情況。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
本文分享利用AI進行Vibe Coding開發產品的經驗,透過自然語言描述需求,讓AI生成前後端程式碼,並快速迭代、測試和調整,以最短時間完成MVP並驗證市場。文章探討此方法的優缺點,並說明為何優先考量速度和市場反饋,而非程式碼優化。
Thumbnail
本文分享利用AI進行Vibe Coding開發產品的經驗,透過自然語言描述需求,讓AI生成前後端程式碼,並快速迭代、測試和調整,以最短時間完成MVP並驗證市場。文章探討此方法的優缺點,並說明為何優先考量速度和市場反饋,而非程式碼優化。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News