1. 程式人生 > >依賴注入(DI)和控制反轉(IoC)

依賴注入(DI)和控制反轉(IoC)

依賴注入(DI)和控制反轉(IoC)是一個意思。

當某個java物件需要呼叫另一個java物件(被依賴者),在傳統模式下通常有兩種做法:
原始做法: 呼叫者主動建立被依賴物件,然後再呼叫被依賴物件的方法。

簡單工廠模式: 呼叫者先找到被依賴物件的工廠,然後主動通過工廠去獲取被依賴物件,最後再呼叫被依賴物件的方法。

注意上面的主動二字,這必然會導致呼叫者與被依賴物件實現類的硬編碼耦合,非常不利於專案升級的維護。使用Spring框架之後,呼叫者無需主動獲取被依賴物件,呼叫者只要被動接受Spring容器為呼叫者的成員變數賦值即可,由此可見,使用Spring後,呼叫者獲取被依賴物件的方式由原來的主動獲取,變成了被動接受——所以稱之為控制反轉。
另外從Spring容器的角度來看,Spring容器負責將被依賴物件賦值給呼叫者的成員變數——相當於為呼叫者注入它依賴的例項,因此Martine Fowler稱之為依賴注入。