設計原則:我是如何使用“依賴注入”的


依賴注入的定義

控制反轉(Inversion of Control,英文縮寫為IoC)是一個重要的面向對象編程的法則來削減計算機程序的耦合問題。 控制反轉還有一個名字叫做依賴注入(Dependency Injection)。簡稱DI。

構造方法注入

代碼示例

1 public class Service
2 {
3     private readonly IDependService _dependService;
4 
5     public Service(IDependService dependService)
6     {
7         _dependService = dependService;
8     }   
9 }

意圖:非常強烈的依賴關系,缺少該依賴服務不能正常的履行期職責,運行時不能修改依賴對象(采用readonly聲明)。

屬性注入

代碼示例

 1 public class Service
 2 {
 3     private IDependService _dependService;
 4 
 5     public Service()
 6     {
 7         _dependService = new DefaultDependService();
 8     }
 9 
10     public IDependService DependService
11     {
12         set
13         {
14             _dependService = value;    
15         }
16     }
17 }

意圖:擁有默認的依賴關系,運行時可以修改依賴對象。

方法注入

代碼示例

1 public class Service
2 {
3     public void Do(IDependService dependService)
4     {
5         //調用依賴
6     }
7 }

意圖:沒辦法采用上邊兩種注入的場景,如:需要從數據庫持久化回來的領域模型;這種模式的依賴會向上傳遞(所有的注入方式都會)直到上層采用構造方法注入和屬性注入。

備注

感謝IOC,沒有IOC,真的很難愛上DI。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM