Sobes.tech
Junior — Middle

Loyihalaringizda xizmatlarga nazoratli kirish uchun Service Locator naqshini qoʻlladizmi?

sobes.tech AI

AIdan javob

Ha, men loyihalarimda xizmatlar va komponentlarga markaziy kirish uchun Service Locator naqshini ishlatganman.

Service Locator — bu kerakli xizmatni (masalan, DI konteyneri yoki fabrikadan) qanday olishni biladigan va uni mijozlarga so'rov bo'yicha taqdim etadigan ob'ekt. Bu katta ilovalarda bog'liqliklarni boshqarishni soddalashtiradi.

C# misoli:

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

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

Ammo, Service Locator bog'liqliklarni yashirishi va testlarni qiyinlashtirishi mumkinligini unutmang, shuning uchun zamonaviy loyihalarda aniq bog'liqliklarni in'ektsiya qilish (Dependency Injection) afzalroq hisoblanadi.