Junior — Middle
Kas kasutasite oma projektides Service Locator mustrit teenuste kontrollitud juurdepääsuks?
sobes.tech AI
Vastus AI-lt
Jah, ma kasutasin oma projektides Service Locator mustrit, et saada keskne ligipääs teenustele ja komponentidele.
Service Locator on objekt, mis teab, kuidas saada vajalikku teenust (näiteks DI konteineri või tehase kaudu) ja pakub seda klientidele nõudmisel. See lihtsustab sõltuvuste haldamist, eriti suurtes rakendustes.
Näide C#-s:
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;
}
}
// Kasutamine
ServiceLocator.Register<IService>(new MyService());
var service = ServiceLocator.Get<IService>();
Kuid on oluline meeles pidada, et Service Locator võib varjata sõltuvusi ja keerulisemaks muuta testimist, seetõttu eelistatakse kaasaegsetes projektides selget sõltuvuste sisestamist (Dependency Injection).