Junior — Middle
Czy możesz wyjaśnić zasadę działania wzorca Service Locator i jego zastosowanie w architekturze aplikacji?
sobes.tech AI
Odpowiedź od AI
Wzorzec Service Locator jest używany do zarządzania zależnościami w aplikacji. Jego istota polega na tym, że istnieje scentralizowany obiekt — lokalizator usług, który wie, jak tworzyć i dostarczać potrzebne usługi (obiekty odpowiedzialne za określone funkcje).
Zastosowanie:
- Zamiast aby każda klasa bezpośrednio tworzyła lub otrzymywała zależności, odwołuje się do Service Locator.
- Ułatwia to zamianę implementacji usług (np. do testowania).
- Pomaga unikać silnego powiązania między komponentami.
Przykład w 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
}
}
// Użycie:
let analytics = MyAnalyticsService()
ServiceLocator.shared.addService(analytics)
if let analyticsService: AnalyticsService = ServiceLocator.shared.getService() {
analyticsService.track(event: "AppStarted")
}
Wady: może utrudniać śledzenie zależności i testowanie, jeśli jest używany bez ostrożności.