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).