Sobes.tech
Junior — Middle

Hai utilizzato il pattern Service Locator nei tuoi progetti per un accesso controllato ai servizi?

sobes.tech AI

Risposta dell'AI

Sì, ho utilizzato il pattern Service Locator nei miei progetti per un accesso centralizzato ai servizi e ai componenti dell'applicazione.

Il Service Locator è un oggetto che sa come ottenere il servizio necessario (ad esempio, tramite un contenitore DI o una fabbrica) e lo fornisce ai clienti su richiesta. Questo semplifica la gestione delle dipendenze, specialmente in grandi applicazioni.

Esempio in 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;
    }
}

// Utilizzo
ServiceLocator.Register<IService>(new MyService());
var service = ServiceLocator.Get<IService>();

Tuttavia, bisogna ricordare che il Service Locator può nascondere le dipendenze e complicare i test, quindi nei progetti moderni si preferisce l'iniezione esplicita delle dipendenze (Dependency Injection).