Service Locator
Architecture 🟡 MidDefinition
Registre central qui fournit des services a la demande. Considere comme un anti-pattern car il cache les dependances au lieu de les rendre explicites.
Analogie
Les Pages Jaunes : tu cherches un plombier sans savoir lequel tu auras. Le probleme : tu ne vois pas les dependances.
Exemple de code
class ServiceLocator {
static #services = new Map();
static register(name, svc) { this.#services.set(name, svc); }
static get(name) { return this.#services.get(name); }
}
Cas d'usage
Legacy code ou l'injection de dependances n'est pas disponible.
Anti-pattern
Ce pattern EST l'anti-pattern : dependances cachees, tests difficiles, couplage au locator.