跳到主要內容

發表文章

目前顯示的是 12月, 2024的文章

C# DI 輕鬆學

C# DI 輕鬆學 C# DI 輕鬆學 DI 概念 IoC (Inversion of Control) - 控制反轉 定義:IoC 是一種設計原則,將對象的控制權從內部轉移到外部。具體而言,應用程式不再負責控制物件的建立與管理,而是將這些工作交給外部的容器或框架。 作用:通過將控制權反轉,可以讓應用程式更具彈性、更容易測試,並提高可維護性。 舉例: 傳統設計:類別 A 自行建立類別 B 的實例(new 關鍵字)。 IoC 設計:類別 A 的類別 B 由外部容器或框架提供,類別 A 不直接控制物件的建立。 DIP (Dependency Inversion Principle) - 相依反轉原則 定義:DIP 是 SOLID 原則中的一部分,主要指: 高層模組不應該依賴低層模組;兩者應依賴於抽象(介面或抽象類別),處處都介面。 抽象不應該依賴細節;細節應該依賴抽象。 目的:降低模組間的耦合性,使程式更靈活、更易於擴展。 舉例: 壞設計:類別 A 直接依賴類別 B。 好設計:類別 A 依賴於一個介面,由類別 B 實現該介面。 說明: 當使用 MSSQL 建立的 Repository 來存取資料表時,Service 類別會依賴該 Repository 類別進行資料操作。 也就是說,Service 與低層的 Repository 類別存在相依性。然而,假設有一天需要將 Repository 的實現改為使用 NoSQL 來存取資料,此時勢必需要重新改寫 Repository 的實作,而這種改變也會影響到 Service 類別的內部結構, 導致高層模組(Service)與低層模組(Repository)的耦合性過高。 為了解決這個問題,我們可以採用 DIP(依賴反轉原則) 的設計模式。在此模式下,我們會建立一個 IRepository 介面 ,定義高層模組與低層模組之間的契約。Service 類別只依賴於該介面,而不關心具體的...