Sobes.tech
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")
}

Недостаци: може отежати праћење зависности и тестирање ако се користи без опреза.