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ță.