依賴注入

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

依賴注入是指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的實例。這實際上還是依賴注入的思想,只不過換了一種實現方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章