介面在專案中的實際應用

在專案中創建Services資料夾,並在之中創建Interfaces資料夾。
以AesCrypto為例建立介面
在Interfaces中建立一個名為IEncryption.cs的interface。

實作 AesCryptoService Class
接著在Services下建立名為AesCryptoService.cs的類別
AesCryptoService繼承了IEncryption因此必須提供所有介面成員的具體實現。
注意需要using Services.Interfaces

註冊
接著到Program.cs註冊,以明確告訴 ASP.NET Core DI 容器如何創建這些服務的實例。

建構
通過建構函數注入使用這些服務

使用

可以直接使用,不必每用一次就new一次。
介面的好處
依賴注入建議使用介面的原因
-
解耦合:
- 介面允許類之間的低耦合。當一個類依賴於介面而不是具體的實現時,它並不知道具體的實現細節,這使得類之間的依賴關係變得更鬆散。
-
可替換性:
- 使用介面可以方便地替換實現。例如,在單元測試中,你可以替換成假物件(Mock)或測試版本的實現,而不需要改變依賴的類的代碼。
-
增強靈活性:
- 當需求變更時,只需要改變介面的實現,而不需要改變依賴於這些介面的類。這樣的設計增強了系統的靈活性和可擴展性。
-
提高可測試性:
- 依賴注入使得單元測試更容易,因為你可以注入模擬的依賴,而不是使用真實的實現。這使得測試變得更獨立和可控。
-
遵循SOLID原則:
- 使用介面有助於遵循SOLID原則中的依賴倒置原則(Dependency Inversion Principle, DIP)。這一原則強調高層模塊不應該依賴低層模塊,兩者都應該依賴於抽象。介面即為這樣的抽象。
-
清晰的契約(Clear Contract)增加了可維護性:
- 使用介面可以使得代碼更易讀和易維護。介面明確了類需要實現的行為,這有助於理解和維護系統。
設計模式-以工廠模式為例
1. 靈活的對象創建和管理(Flexible Object Creation and Management)
工廠模式使用介面來定義要創建的對象類型,使得工廠方法可以創建和返回不同的實現,增強了系統的靈活性。
2. 簡化代碼修改和擴展(Simplified Code Modification and Extension)
通過介面和工廠模式的結合,可以在不修改現有代碼的情況下添加新的類型和行為,僅需新增實現和更新工廠方法。
3. 增強測試能力(Enhanced Testability)
工廠模式結合介面可以輕鬆替換具體實現,使得測試更加簡便。可以輕鬆地創建模擬對象來進行單元測試,提升測試的可控性和覆蓋範圍。
可參考先前文章:
[C#] #1 認識介面(interface) <br/> [C#] #2 工廠模式與介面在C#中的應用 <br/> [C#] #3 策略模式與介面在C#中的應用 <br/> [C#] #4 依賴注入與介面在C#中的應用 <br/>
