Um Code zu entkoppeln, können Sie Service-Locater haben, aber dies ist nicht dasselbe wie globale Variablen/Status ?.Sind Service-Locators nicht nur globale Variablen/Status?
Ich kenne diese oft ablaufenden Schnittstellen, also übergibt man eine Schnittstelle und bekommt eine konkrete Klasse zurück aber trotzdem steht meine Frage.
Zum Beispiel:
class Something {
void DoSomething() {
IMyType myType = ServiceLocator.GetSerivceTypeOf(IMyType);
}
}
Hier ist die Klasse erfordert MyType, die woanders erzeugt wird, sondern als Übergang MyType nach unten durch die Ketten (über Bauer etc ...) ist es auf diese Weise erworben wird.
Diese Frage habe ich schon früh in meiner beruflichen Laufbahn als Entwickler gestellt - vorher war mir dieses Muster nicht aufgefallen. Anthony hat meine Meinung (und deshalb ist die ausgewählte Antwort jetzt) auf Service Locator - in der Tat sehe ich sie als Anti-Muster wie andere. Die bereitgestellten Links sind ein guter Ausgangspunkt - aber um nach all dieser Zeit meine eigene Frage etwas zu beantworten, agieren sie als globaler Zustand und sollten vermieden werden. Bevorzugen Sie die Standardabhängigkeitsinjektion;)
Ein Beispiel oder zwei könnte die Diskussion ein wenig Feuer und Flamme bekommen. –