Sobes.tech
Junior — Middle

Da li ste koristili obrazac Service Locator u svojim projektima za kontrolisani pristup servisima?

sobes.tech АИ

Одговор од АИ

Da, koristio sam obrazac Service Locator u mojim projektima za centralizovani pristup servisima i komponentama aplikacije.

Service Locator je objekat koji zna kako da dobije potrebnu uslugu (na primer, putem DI kontejnera ili fabrike) i pruža je klijentima na zahtev. Ovo pojednostavljuje upravljanje zavisnostima, posebno u velikim aplikacijama.

Primer u 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;
    }
}

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

Međutim, važno je zapamtiti da Service Locator može skrivati zavisnosti i otežati testiranje, zbog čega u modernim projektima češće preferira eksplicitnu injekciju zavisnosti (Dependency Injection).