Sobes.tech
Junior — Middle

Έχετε χρησιμοποιήσει το μοτίβο Service Locator στα έργα σας για ελεγχόμενη πρόσβαση σε υπηρεσίες;

sobes.tech AI

Απάντηση από AI

Ναι, χρησιμοποίησα το μοτίβο Service Locator στα έργα μου για κεντρική πρόσβαση σε υπηρεσίες και συστατικά της εφαρμογής.

Ο Service Locator είναι ένα αντικείμενο που γνωρίζει πώς να λάβει την απαραίτητη υπηρεσία (π.χ. μέσω ενός διαχειριστή DI ή μιας κατασκευαστικής κλάσης) και την παρέχει στους πελάτες κατόπιν αιτήματος. Αυτό απλοποιεί τη διαχείριση των εξαρτήσεων, ειδικά σε μεγάλα έργα.

Παράδειγμα σε C#:

public interface IService {}
public class MyService : IService {}

public class ServiceLocator
{
    private static readonly Dictionary<Type, object> services = new Dictionary<Type, object>();

    public static void Register<T>(T service) where T : class
    {
        services[typeof(T)] = service;
    }

    public static T Get<T>() where T : class
    {
        services.TryGetValue(typeof(T), out var service);
        return service as T;
    }
}

// Χρήση
ServiceLocator.Register<IService>(new MyService());
var service = ServiceLocator.Get<IService>();

Ωστόσο, πρέπει να θυμόμαστε ότι ο Service Locator μπορεί να κρύψει εξαρτήσεις και να δυσκολέψει τις δοκιμές, γι' αυτό στις σύγχρονες έργα προτιμάται η ρητή εισαγωγή εξαρτήσεων (Dependency Injection).