Sobes.tech
Junior — Middle

Можете ли да обясните принципа на работа на патърна Service Locator и неговото приложение в архитектурата на приложенията?

sobes.tech AI

Отговор от AI

Моделът Service Locator се използва за управление на зависимостите в приложение. Неговата същност е, че съществува централизиран обект — локатор на услуги, който знае как да създава и предоставя необходимите услуги (обекти, отговорни за определени функции).

Приложение:

  • Вместо всяка класа директно да създава или получава зависимости, тя се обръща към 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")
}

Недостатъци: може да усложни проследяването на зависимости и тестването, ако се използва без внимание.