Sobes.tech
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.