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) артык көрүшөт.