Sobes.tech
Junior — Middle

Vai esat izmantojis Service Locator paraugu savos projektos pakalpojumu kontrolētai piekļuvei?

sobes.tech AI

Atbilde no AI

Jā, es savos projektos izmantoju Service Locator paraugu, lai nodrošinātu centralizētu piekļuvi pakalpojumiem un komponentiem.

Service Locator ir objekts, kas zina, kā iegūt nepieciešamo pakalpojumu (piemēram, caur DI konteineru vai rūpnīcu) un to nodrošina klientiem pēc pieprasījuma. Tas atvieglo atkarību pārvaldību, īpaši lielās programmās.

Piemērs 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;
    }
}

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

Tomēr ir svarīgi atcerēties, ka Service Locator var slēpt atkarības un sarežģīt testēšanu, tāpēc mūsdienu projektos biežāk tiek izvēlēta skaidra atkarību injekcija (Dependency Injection).