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.