Junior — Middle
Môžete vysvetliť princíp fungovania vzoru Service Locator a jeho použitie v architektúre aplikácií?
sobes.tech AI
Odpoveď od AI
Vzor Service Locator sa používa na riadenie závislostí v aplikácii. Jeho podstata spočíva v tom, že existuje centralizovaný objekt — lokalizátor služieb, ktorý vie, ako vytvoriť a poskytnúť potrebné služby (objekty zodpovedné za určité funkcie).
Použitie:
- Namiesto toho, aby každá trieda priamo vytvárala alebo získavala závislosti, odvoláva sa na Service Locator.
- To uľahčuje výmenu implementácií služieb (napríklad na testovanie).
- Pomáha vyhnúť sa silnému prepojeniu medzi komponentmi.
Príklad v 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
}
}
// Použitie:
let analytics = MyAnalyticsService()
ServiceLocator.shared.addService(analytics)
if let analyticsService: AnalyticsService = ServiceLocator.shared.getService() {
analyticsService.track(event: "AppStarted")
}
Nevýhody: môže sťažiť sledovanie závislostí a testovanie, ak sa používa bez opatrnosti.