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

Μειονεκτήματα: μπορεί να περιπλέξει την παρακολούθηση των εξαρτήσεων και τη δοκιμή αν χρησιμοποιείται χωρίς προσοχή.