Sobes.tech
Junior — Middle

Оё шумо намунаи Service Locator-ро дар лоиҳаҳои худ барои дастрасии назоратшаванда ба хизматрасониҳо истифода бурдаед?

sobes.tech AI

Ҷавоб аз AI

Бале, ман лойиҳаларимда хизматлар ва компонентларга марказий кириш учун Service Locator паттерндан фойдаланганман.

Service Locator — бу объект, у қандай қилиб керакли хизматни (масалан, DI контейнери ёки фабрика орқали) олишни билади ва уни мижозларга сўров бўйича тақдим этади. Бу катта дастурларда боғлиқликларни бошқаришни соддалаштиради.

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

// Фойдаланиш
ServiceLocator.Register<IService>(new MyService());
var service = ServiceLocator.Get<IService>();

Аммо, эътибор бериш керакки, Service Locator боғлиқликларни яшириши ва тестлашни қийинлаштириши мумкин, шунинг учун замонавий лойиҳаларда очиқ боғлиқлик инъекциясини (Dependency Injection) афзал кўришади.