Sobes.tech
Junior — Middle

Használta a Service Locator mintát projektjeiben az irányított hozzáféréshez a szolgáltatásokhoz?

sobes.tech MI

Válasz az MI-től

Igen, a Service Locator mintát használtam a projektjeimben a szolgáltatások és komponensek központi eléréséhez.

A Service Locator egy olyan objektum, amely tudja, hogyan szerezze be a szükséges szolgáltatást (például DI-konténer vagy gyár segítségével), és kérésre biztosítja azt az ügyfelek számára. Ez megkönnyíti a függőségek kezelését, különösen nagy alkalmazásokban.

Példa C#-ban:

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

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

Azonban fontos megjegyezni, hogy a Service Locator elrejtheti a függőségeket és megnehezítheti a tesztelést, ezért a modern projektekben inkább az explicit függőség-injektálást (Dependency Injection) részesítik előnyben.