Junior — Middle
Podes dar um exemplo de implementação do princípio da inversão de dependências num projeto?
sobes.tech IA
Resposta da IA
O Princípio da Inversão de Dependências (Dependency Inversion Principle, DIP) afirma que os módulos de nível superior não devem depender diretamente dos módulos de nível inferior, mas ambos devem depender de abstrações (por exemplo, protocolos ou interfaces).
Exemplo em Swift para iOS:
// Abstração
protocol DataService {
func fetchData() -> String
}
// Implementação concreta
class NetworkDataService: DataService {
func fetchData() -> String {
return "Dados da rede"
}
}
// Classe que depende da abstração, não da implementação concreta
class ViewModel {
private let dataService: DataService
init(dataService: DataService) {
self.dataService = dataService
}
func getData() -> String {
return dataService.fetchData()
}
}
// Uso
let networkService = NetworkDataService()
let viewModel = ViewModel(dataService: networkService)
print(viewModel.getData()) // Vai imprimir: Dados da rede
Aqui, ViewModel depende do protocolo DataService, não da classe concreta NetworkDataService. Isso permite trocar facilmente a implementação do serviço, por exemplo, para testes ou outra fonte de dados, sem alterar o código de ViewModel.