Sobes.tech
Junior — Middle

Pouvez-vous expliquer le principe du pattern Service Locator et son application dans l'architecture des applications?

sobes.tech IA

Réponse de l'IA

Le modèle Service Locator est utilisé pour gérer les dépendances dans une application. Son principe est qu'il existe un objet centralisé — le localisateur de services, qui sait comment créer et fournir les services nécessaires (objets responsables de fonctions spécifiques).

Application:

  • Au lieu que chaque classe crée ou reçoive directement ses dépendances, elle se réfère au Service Locator.
  • Cela facilite le remplacement des implémentations de services (par exemple, pour les tests).
  • Aide à éviter une forte dépendance entre les composants.

Exemple en Swift:

protocol AnalyticsService {
    func track(event: String)
}

class ServiceLocator {
    static let shared = ServiceLocator()
    private var services = [String: Any]()

    func addService<T>(_ service: T) {
        let key = String(describing: T.self)
        services[key] = service
    }

    func getService<T>() -> T? {
        let key = String(describing: T.self)
        return services[key] as? T
    }
}

// Utilisation:
let analytics = MyAnalyticsService()
ServiceLocator.shared.addService(analytics)

if let analyticsService: AnalyticsService = ServiceLocator.shared.getService() {
    analyticsService.track(event: "AppStarted")
}

Inconvénients : peut compliquer le suivi des dépendances et les tests si utilisé sans précaution.