Sobes.tech
Junior — Middle

Pode explicar o conceito de inversão de controlo e o seu papel no desenvolvimento de sistemas de software?

sobes.tech IA

Resposta da IA

Inversão de controlo (Inversion of Control, IoC) é um princípio de design em que o controlo do fluxo do programa é transferido para um contêiner ou framework externo, em vez de ser implementado diretamente no código da aplicação.

Em vez de um objeto criar e gerir as suas dependências por si próprio, estas dependências são injetadas de fora (por exemplo, através do construtor ou de um setter). Isto aumenta a modularidade, simplifica os testes e a manutenção do código.

Em Java, isto é frequentemente implementado através da Injeção de Dependências, onde o contêiner (por exemplo, Spring) cria objetos e gere o seu ciclo de vida.

Exemplo de injeção de dependência:

public class Service {
    private Repository repository;

    // Injeção de dependência através do construtor
    public Service(Repository repository) {
        this.repository = repository;
    }

    public void doWork() {
        repository.save();
    }
}

Aqui, Service não cria o Repository por si só, mas recebe-o de fora, o que corresponde ao princípio IoC.