Sobes.tech
Junior — Middle

Já utilizou o padrão Service Locator nos seus projetos para acesso gerenciado a serviços?

sobes.tech IA

Resposta da IA

Sim, utilizei o padrão Service Locator nos meus projetos para acesso centralizado aos serviços e componentes da aplicação.

O Service Locator é um objeto que sabe como obter o serviço necessário (por exemplo, através de um contêiner DI ou uma fábrica) e fornece-o aos clientes mediante solicitação. Isso simplifica a gestão de dependências, especialmente em aplicações grandes.

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

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

No entanto, é importante lembrar que o Service Locator pode esconder dependências e dificultar os testes, por isso nos projetos modernos costuma-se preferir a injeção explícita de dependências (Dependency Injection).