Sobes.tech
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.