Sobes.tech
Junior — Middle

Puteți explica principiul de funcționare al pattern-ului Service Locator și aplicarea sa în arhitectura aplicațiilor?

sobes.tech AI

Răspuns de la AI

Modelul Service Locator este utilizat pentru gestionarea dependențelor într-o aplicație. Esența sa constă în existența unui obiect centralizat — localizatorul de servicii, care știe cum să creeze și să furnizeze serviciile necesare (obiecte responsabile pentru funcții specifice).

Aplicare:

  • În loc ca fiecare clasă să creeze sau să primească direct dependențele, ea se referă la Service Locator.
  • Acest lucru simplifică înlocuirea implementărilor serviciilor (de exemplu, pentru testare).
  • Ajută la evitarea unei dependențe puternice între componente.

Exemplu în 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
    }
}

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

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

Dezavantaje: poate complica urmărirea dependențelor și testarea dacă este utilizat fără prudență.