Entwurfsmuster · Senior · Frage 19 von 75
Warum gilt Service Locator gegenüber DI oft als Anti-Pattern?
- 1Abhängigkeiten sind versteckt: sie stehen nicht in der Signatur
- 2Service Locator ist wegen Suchen nach String-Keys langsamer
- 3Service Locator funktioniert nur auf dem Server
Antwort zeigen
Richtige Antwort: Abhängigkeiten sind versteckt: sie stehen nicht in der Signatur
Erklärung
locator.get('api') in einer Funktion ist eine implizite Abhängigkeit: ein Test muss eine globale Registry aufsetzen, und Fehler zeigen sich erst zur Laufzeit. Mit DI sind Abhängigkeiten in den Parametern sichtbar. useContext ist einem Locator ähnlich, aber auf den Baum begrenzt und typisiert.