閱讀關於3個慣用語之間區別的許多帖子。但變得更加困惑,然後我碰到這篇文章: http://martinfowler.com/articles/injection.html驗證我瞭解IoC,Ioc容器,DI和服務定位器之間的區別
只是想看看我是否得到這個權利。如果我錯了,請糾正我。 請通知我修正和補充:
IOC-是脫鉤它使用一個服務的實現應用程序的概念。該應用程序包含Iservice的參考資料,並且不需要實例化具體服務。
有至少兩個才達到這樣的方式:
DI - 混凝土業務注入的構造函數PARAM /扔一個setter /扔接口注入(什麼後者意味着什麼呢?)
ServiceLocator - 是一個知道應用程序可能需要的所有具體服務的組件。該應用程序明確要求定位器的具體服務。
* IoC容器實際上是控件的工廠(「提供者」)。
我對文章中的「何時偏好(1)或(2)」部分有些困惑。 有人可以從他自己的經驗中看出一個外行人的話嗎?
「服務定位器由於其更直接的行爲而具有輕微的優勢,但如果要構建在多個應用程序中使用的類,則依賴注入是更好的選擇。」 - >定位器如何更直接?因爲它明確使用方法調用?有多個應用程序時使用DI有什麼好處?
也許你可以突出文章那部分中對你感到困惑的特定想法? – prasopes
「服務定位器由於其更直接的行爲而具有輕微的優勢,但如果您要構建在多個應用程序中使用的類,則依賴注入是更好的選擇。」 - >定位器如何更直接?因爲它明確使用方法調用?有多個應用程序時使用DI有什麼好處? –
相關:http://stackoverflow.com/questions/6766056/dip-vs-di-vs-ioc –