Sobes.tech
Junior — Middle

Použili ste vzor Service Locator vo svojich projektoch na riadený prístup ku službám?

sobes.tech AI

Odpoveď od AI

Áno, v mojich projektoch som používal vzor Service Locator na centralizovaný prístup k službám a komponentom aplikácie.

Service Locator je objekt, ktorý vie, ako získať potrebnú službu (napríklad cez DI kontajner alebo továreň) a poskytne ju klientom na požiadanie. To zjednodušuje správu závislostí, najmä v veľkých aplikáciách.

Príklad v 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;
    }
}

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

Avšak je dôležité si uvedomiť, že Service Locator môže skrývať závislosti a sťažiť testovanie, preto v moderných projektoch sa častejšie uprednostňuje explicitná injekcia závislostí (Dependency Injection).