天天看點

依賴注入

依賴注入是面向對象程式設計很重要的思想,是實作解耦很重要的一種手段。

依賴注入是指a依賴于b,a不直接在内部執行個體化b,而是通過注入的方式,也就是建構和使用分離。與之相關的思想是,面向接口程式設計,而不要面向實作程式設計。

依賴注入一般需要面向對象語言,或者可以用一定方式實作面向對象的語言(比如lua可以利用元表實作類和繼承,js或者ts也有類和對象的概念)。為啥需要面向對象語言呢?因為依賴注入需要面向接口程式設計,這需要語言支援派生和多态。

依賴注入的形式主要有3種:1.構造函數注入(Constructor Injection)。2.接口注入。例如setMethod方法(Setter Injection)。3.設值方法(Setter Injection)。其實2和3是屬于同一種方法。

應用:在23種設計模式當中,裝飾者模式也有運用類似依賴注入的思想(但每個裝飾者之間其實應該沒有依賴關系?),每個裝飾者在裝飾自己之前,先裝飾通過構造函數注入的前一個裝飾者需要裝飾的東西。類似的,政策模式也算是運用了依賴注入的思想。最近在看puremvc,感覺它裡面的很多實作也都是依賴注入的思想。

其他:與依賴注入思想比較類似的是伺服器定位器模式,它的思想是a依賴于b,a不直接在内部執行個體化b,而是通過伺服器定位器獲得b的執行個體。這實際上還是依賴注入的思想,隻不過換了一種實作方式。

下一篇: 依賴注入