Service Locator
Architecture 🟡 MidDéfinition
Registre central qui fournit des services a la demande. Considère comme un anti-pattern car il cache les dépendances au lieu de les rendre explicites.
Analogie
Les Pages Jaunes : tu cherches un plombier sans savoir lequel tu auras. Le problème : tu ne vois pas les dépendances.
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 dépendances n'est pas disponible.
Anti-pattern
Ce pattern EST l'anti-pattern : dépendances cachées, tests difficiles, couplage au locator.