Junior — Middle
Можете ли да објасните принцип рада патерна Service Locator и његову примену у архитектури апликација?
sobes.tech АИ
Одговор од АИ
Модел сервиса локатор се користи за управљање зависностима у апликацији. Његова суштина је у томе што постоји централизовани објекат — локатор сервиса, који зна како да креира и пружи потребне сервисе (објекте одговорне за одређене функције).
Примењена употреба:
- Уместо да свака класа директно креира или добија зависности, она се обраћа на Service Locator.
- Ово олакшава замену реализација сервиса (нпр. за тестирање).
- Помаже да се избегне јака повезаност компоненти.
Пример у 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
}
}
// Коришћење:
let analytics = MyAnalyticsService()
ServiceLocator.shared.addService(analytics)
if let analyticsService: AnalyticsService = ServiceLocator.shared.getService() {
analyticsService.track(event: "AppStarted")
}
Недостаци: може отежати праћење зависности и тестирање ако се користи без опреза.