爲了解耦代碼,你可以使用服務定位器,但是這不同於全局變量/狀態?服務定位符不僅僅是全局變量/狀態嗎?
我知道這些經常跑掉接口,所以你傳入一個接口並得到一個具體的類,但仍然是我的問題。
例如:
class Something {
void DoSomething() {
IMyType myType = ServiceLocator.GetSerivceTypeOf(IMyType);
}
}
這裏的類需要被創建在其他地方,但不是合格的MyType向下穿過鏈(通過構造函數等)它以這種方式獲得的MyType。
在我作爲開發人員的職業生涯早期,我問過這個問題 - 在此之前我不會遇到這種模式。安東尼已經確定了我對服務定位器的看法(因此現在是選定的答案) - 事實上,我將它們視爲與其他模式相反的反模式。所提供的鏈接是一個很好的起點 - 但是爲了在某種程度上回答我自己的問題,他們充當了全球化的角色,應該避免。優先考慮標準依賴注入;)
一個例子或兩個可能會討論開除了一下。 – 2009-06-10 21:41:54