0
A
回答
0
我意識到這是一個老問題,但這裏有雲:
它總是使用IoC的一個很好的做法。它可以幫助您分離對象創建和使用它們。
這個問題更像是:你能嗎? IoC容器必須知道從CMS需要的所有共享依賴項實例(否則它將創建新的),因此您需要列出所有這些實例,然後才能請求創建自己的對象。這可能會造成問題。
想象一下,您有一個常見的用例場景,您可以使用該CMS的單個共享依賴項。您也有一個罕見的情況,您可以使用其他10個共享依賴項,這些依賴項都來自CMS,並由CMS實例化。爲了使此注入工作,您需要將所有11個依賴項實例添加到IoC中,儘管大多數時候您只需要一個依賴項實例,而其他10個實例可能永遠不會實例化(但現在它們是,因爲你需要實例給他們)。您也不應將相同的邏輯添加到提供實例選擇的依賴項中,因爲您正在複製代碼,而且這也是您想要委派給IoC的工作。總之,如果你的插件在很大程度上依賴於來自CMS的單件服務(注意:不是單例模式,而是共享實例),那麼你不能真正有效地做到這一點。如果你可以從公共範圍(單身模式)訪問所有這些,你可能可以做到,但是這樣你的插件將不會被測試,並且你也會終止IoC的目的。
如果允許您從CMS創建自己的依賴關係,或者您不真正依賴它,或者您始終使用您需要的每個依賴關係,那麼您就很好,但這些都是罕見的用例。
相關問題
- 1. 將MEF插件導入DI/IOC容器
- 2. 內幕等IoC容器
- 3. Biztalk IOC容器
- 4. C#IoC容器
- 5. IOC/Autofac容器
- 6. IoC容器。注入容器
- 7. IoC容器配置
- 8. IoC容器衝突
- 9. IoC容器 - 註冊實例組件
- 10. 春季IoC容器中的條件
- 11. PHP中間件響應/請求參數和IoC容器
- 12. IoC容器,WCF和ServiceHostFactories
- 13. IoC容器可訪問性
- 14. 何時使用IOC容器?
- 15. Laravel:綁定到IoC容器
- 16. 多彈簧IoC容器
- 17. 組合MEF和IoC容器
- 18. 創建整個IoC容器
- 19. Laravel:解決從IOC容器
- 20. 註冊IOC容器自
- 21. IoC容器的示例
- 22. IoC容器屬性繼承
- 23. IoC容器對象範圍
- 24. 使用Unity IoC容器
- 25. PHP內容插入/執行
- 26. PHP - 插入內容在HTML
- 27. Joomla內容插件
- 28. Spring IoC容器如何能夠創建新的對象?還是Spring IoC容器在內部工作?
- 29. IOC容器和全局變量
- 30. laravel - 依賴注入和IoC容器