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")
}
Μειονεκτήματα: μπορεί να περιπλέξει την παρακολούθηση των εξαρτήσεων και τη δοκιμή αν χρησιμοποιείται χωρίς προσοχή.