Sobes.tech
Junior — Middle

Poderia explicar a diferença entre Injeção de Dependências e o padrão de localizador de serviços?

sobes.tech IA

Resposta da IA

Injeção de Dependências (DI) e o padrão do localizador de serviços — ambos são usados para gerir dependências numa aplicação, mas diferem na abordagem:

  • Injeção de Dependências — as dependências são passadas ao objeto de fora (por exemplo, através do construtor ou de um setter). Isto torna as dependências explícitas e facilita os testes, pois é fácil substituir implementações.

  • Localizador de Serviços — o objeto solicita as suas dependências a um serviço centralizado (localizador). Isto oculta as dependências, o que pode dificultar a compreensão e os testes.

Exemplo de DI no Flutter:

class ApiService {}

class UserRepository {
  final ApiService apiService;

  UserRepository(this.apiService);
}

Aqui, UserRepository recebe ApiService de fora.

No caso do localizador de serviços, o objeto acessaria por si próprio ao localizador global para obter ApiService.