Sobes.tech
Junior — Middle

Explique o princípio de funcionamento do padrão Service Locator e suas principais características.

sobes.tech IA

Resposta da IA

O padrão Service Locator é uma forma de organizar o acesso a dependências e serviços numa aplicação através de um objeto centralizado (localizador). Em vez de passar explicitamente as dependências, os componentes solicitam os serviços necessários ao localizador de serviços.

Principais características:

  • Gestão centralizada de dependências.
  • Simplificação do código dos componentes, pois eles não sabem como os serviços são criados.
  • Possibilidade de substituir as implementações dos serviços num único local.

No entanto, o padrão é criticado porque oculta as dependências, dificultando os testes e a compreensão do código, uma vez que as dependências não são evidentes.

Exemplo de uso:

class ServiceLocator {
  constructor() {
    this.services = new Map();
  }

  register(name, instance) {
    this.services.set(name, instance);
  }

  get(name) {
    return this.services.get(name);
  }
}

const locator = new ServiceLocator();
locator.register('logger', console);

const logger = locator.get('logger');
logger.log('Mensagem');

Nos testes, é possível substituir os serviços por mocks, registando-os no localizador.