Sobes.tech
Junior — Middle

Explique o princípio de inversão de controlo com um exemplo de sistema de chamada de táxi.

sobes.tech IA

Resposta da IA

Inversão de controlo (IoC) é um princípio em que a gestão da criação e ligação de objetos é transferida para um contêiner ou framework externo, em vez de ser implementada diretamente no código.

Exemplo num sistema de chamada de táxi:

  • Em vez de a classe TaxiService criar ela própria objetos Driver ou Car, essas dependências são passadas a ela de fora (por exemplo, através do construtor).
  • O contêiner IoC é responsável por criar e ligar todos os objetos.
public class TaxiService {
    private Driver driver;

    // Dependência passada de fora
    public TaxiService(Driver driver) {
        this.driver = driver;
    }

    public void callTaxi() {
        driver.driveToCustomer();
    }
}

Aqui, TaxiService não cria Driver por si só, mas recebe-o de fora. Isto facilita testes, extensões e manutenção do código, pois as dependências podem ser alteradas sem modificar a própria classe.