Sobes.tech
Junior — Middle

Kunt u het principe van het Service Locator-patroon en de toepassing ervan in de architectuur van applicaties uitleggen?

sobes.tech AI

Antwoord van AI

Het Service Locator-patroon wordt gebruikt om afhankelijkheden in een applicatie te beheren. Het principe is dat er een gecentraliseerd object is — de service locator, die weet hoe hij de benodigde services (objecten die verantwoordelijk zijn voor specifieke functies) moet maken en leveren.

Toepassing:

  • In plaats van dat elke klasse afhankelijkheden direct aanmaakt of ontvangt, verwijst deze naar de Service Locator.
  • Dit vereenvoudigt het vervangen van service-implementaties (bijvoorbeeld voor testen).
  • Het helpt om sterke koppeling tussen componenten te voorkomen.

Voorbeeld in 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
    }
}

// Gebruik:
let analytics = MyAnalyticsService()
ServiceLocator.shared.addService(analytics)

if let analyticsService: AnalyticsService = ServiceLocator.shared.getService() {
    analyticsService.track(event: "AppStarted")
}

Nadelen: kan het volgen van afhankelijkheden en testen bemoeilijken als het zonder voorzichtigheid wordt gebruikt.