Sobes.tech
Junior — Middle

Pode explicar o conceito de dependência inversa e o seu papel no design de sistemas?

sobes.tech IA

Resposta da IA

Inversão de controlo (IoC) é um princípio de design onde a gestão das dependências entre componentes do sistema é transferida para um contêiner ou framework externo, em vez de ser criada diretamente dentro dos componentes.

Papel no design de sistemas:

  • Aumenta a modularidade e a testabilidade, pois os componentes não dependem de implementações específicas, mas as recebem de fora.
  • Facilita a substituição e expansão de componentes sem alterar o código que os utiliza.

Exemplo: em vez de a classe criar ela mesma o objeto de dependência, ela o recebe através do construtor ou de um método setter. Isso permite trocar facilmente as implementações, por exemplo, para testes.

protocol Service {
    func doWork()
}

class RealService: Service {
    func doWork() { print("Trabalho realizado") }
}

class Client {
    let service: Service
    init(service: Service) {
        self.service = service
    }
}

let service = RealService()
let client = Client(service: service)

Aqui, o Client não cria o RealService por si só, mas o recebe de fora — isto é inversão de dependência.