在編寫代碼時,我們應該能夠找出兩個大組對象:依賴注入,注入一個「注射」對象(服務)到newable(實體)
- 注射劑
- Newables
http://www.loosecouplings.com/2011/01/how-to-write-testable-code-overview.html
http://misko.hevery.com/2008/09/30/to-new-or-not-to-new/
個注射對象是暴露在它們的構造函數依賴這些依賴通常使用IoC容器解決對象(服務),這些對象可以只要求其他注射在它們的構造
Newable的對象也暴露在它們的構造,但newables依賴只能尋求其他newable對象(實體,值對象),newable對象的另一個特點是,他們不應該持有的引用可注射的對象
但在編寫代碼時,我們經常會需要「注入」一個服務器冰(注入)到一個實體(新)
我一直在想,也許暴露在一個新對象的服務依賴項更好地做它在方法級別,但這聽起來像很多工作要做....只是想着每一個方法被調用時解析依賴....嗯,這聞起來像,我們將不得不使用服務定位器反模式
我已經解決了這一問題的方法是:
創建一個暴露依賴關係的方法的接口(該服務將用於此方法)
爲接口創建一個擴展方法,並將其放置在不同的命名空間,也許在另一個程序集,只是包裹在調用原始的方法使用一個服務定位器
解決依賴這樣做,我們有newable和注射對象之間的一致與分離使用的服務在我們的newables容易
- 你怎麼想的能力嗎?
- 在擴展方法中使用服務定位器被認爲是不好的做法?
- 你將如何單元測試擴展方法調用?
密切相關:http://stackoverflow.com/questions/4835046/why-not-use-an-ioc-container-to-resolve-dependencies-for-entities-business-objec – Steven 2012-03-14 11:28:41
這個鏈接真的有用 – Jupaol 2012-03-14 12:53:17