Sobes.tech
Junior — Middle

Service Locator deseninin çalışma prensibini ve uygulamalarda mimarideki kullanımını açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Service Locator Deseni, uygulamada bağımlılıkları yönetmek için kullanılır. Özünde, merkezi bir nesne — hizmet bulucu — vardır ve bu nesne, ihtiyaç duyulan hizmetleri (belirli fonksiyonlardan sorumlu nesneleri) nasıl oluşturup sağlayacağını bilir.

Uygulama:

  • Her sınıf doğrudan bağımlılıkları oluşturmak veya almak yerine, Service Locator'a başvurur.
  • Bu, hizmet uygulamalarının değiştirilmesini (örneğin, testler için) kolaylaştırır.
  • Bileşenler arasındaki güçlü bağımlılığı önlemeye yardımcı olur.

Swift'te örnek:

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

// Kullanım:
let analytics = MyAnalyticsService()
ServiceLocator.shared.addService(analytics)

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

Eksiler: dikkatli kullanılmazsa bağımlılıkların takibini ve testleri zorlaştırabilir.