回答
AFAIK依賴注入不是一種設計模式但在SOLID principles定義的設計方針。
所以Bridge模式使用依賴注入在它達到所需的多態行爲,其中DrawingAPI
在構造函數中被注入從具體實施API的解耦Shape
。
protected Shape(DrawingAPI drawingAPI){
this.drawingAPI = drawingAPI;
}
Bridge模式的例子 - 設計模式
依賴注入 - 設計準則或原則
我同意你說的,但是當我從Wiki中讀取定義時,它說「依賴注入是一種實現軟件庫控制反轉的軟件設計模式」,所以你認爲術語「設計模式」是錯誤的或者它是正確的一種觀點? – fmchan
@fmchan恕我直言,依賴注入是一種原則而不是設計模式。它構成了許多GoF設計模式的核心,也是SOLID的基本原理之一。 –
您可以通過幾種機制做的依賴注入。橋樑機制只是其中之一。簡單的界面實現是另一個。類織造和其他動態技巧又一個。
依賴注入是一種開發/設計技術,但不是一種模式,因爲它可以通過多種方式實現。
想一想更多關於此的信息,您可以考慮依賴注入軟件體系結構模式(但仍不是設計),這是解決一系列架構問題(可測試性,可配置性,模塊化等)。
換句話說,依賴注入可以有效地被視爲一個模式,但在不同的層次上:架構,而不是設計。
橋接模式使用Dependency Inversion使網橋工作,即抽象基類/接口取決於實現者接口。
依賴注入是依賴倒置原理最常用的實現。
許多設計模式都有類似的UML圖。
橋樑模式與依賴注入完全不同。
Dependency Injection - 在運行時或編譯時輕鬆插入(和交換)代碼中的依賴關係的一種方法。
Bridge Pattern - 一種在不同系統之間增加額外接口的方法。 Bridge是你的代碼和其他系統之間的通信層。例如,Java中最常用的兩種Bridge Pattern實現是JDBC(它通過Driver Bridge與數據庫通信)和Swing(使用Bridge與操作系統的UI進行通信)。這樣可以讓其他系統換出或更改,而不會影響或更改通信層到系統。
編輯:忘了提及一座橋還允許橋上的雙方獨立進化和改變,而不會影響另一方。這是因爲橋將兩側隔離開來。
- 1. 橋樑或工廠模式?
- 2. 橋樑+命令模式
- 3. 在WebView中注入Javascript橋樑
- 4. 依賴注入與註解
- 5. 與依賴注入循環依賴
- 6. 依賴注入與循環依賴
- 7. 依賴注入與數據庫模型
- 8. 工廠模式在依賴注入
- 9. PHP工廠模式依賴注入
- 10. 依賴注入設計模式
- 11. 依賴注入容器 - 工廠模式
- 12. Ninject依賴注入Decorator模式
- 13. 依賴注入和觀察者模式
- 14. 策略模式vs依賴注入
- 15. 依賴注入的創建模式
- 16. 策略模式和依賴注入
- 17. 依賴注入和/或工廠模式
- 18. C#依賴注入和策略模式
- 19. C++橋樑模式和智能指針
- 20. 橋樑模擬遊戲
- 21. 依賴注入與node.js
- 22. 依賴注入與非類
- 23. 依賴注入RoleStore與ninject
- 24. 依賴注入與工廠
- 25. 依賴注入與集合
- 26. 依賴注入與roboguice
- 27. 依賴注入與OSGI
- 28. 依賴注入的方式
- 29. 依賴注入
- 30. 依賴注入
我不同意那些聲稱DI不是設計模式的人。很少人會認爲MVC不是一種設計模式,它也有多種實現模式。 –