Junior — Middle
Pode explicar em que consiste a ideia de injeção de dependências no design de software?
sobes.tech IA
Resposta da IA
A ideia de injeção de dependências (Dependency Injection, DI) consiste em separar a criação e gestão das dependências dos objetos do seu uso. Em vez de a classe criar ou procurar as suas dependências, estas são fornecidas de fora.
Isto aumenta a modularidade, facilita os testes (é possível usar objetos simulados) e simplifica a manutenção do código.
Exemplo: em vez de criar um objeto de serviço dentro da classe,
class UserService {
private UserRepository repo = new UserRepository(); // dependência rígida
}
passamos a dependência através do construtor:
class UserService {
private UserRepository repo;
public UserService(UserRepository repo) {
this.repo = repo;
}
}
Agora, UserService não é responsável por criar UserRepository, mas recebe-o de fora, o que permite alterar facilmente a implementação e testar a classe.