Junior — Middle
Pode explicar o que se entende pelo princípio da inversão de dependências na programação orientada a objetos?
sobes.tech IA
Resposta da IA
O Princípio da Inversão de Dependências (Dependency Inversion Principle, DIP) é um dos cinco princípios SOLID na programação orientada a objetos. Ele afirma:
- Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações.
- Abstrações não devem depender de detalhes. Detalhes devem depender de abstrações.
Isto significa que, em vez de uma classe criar ou usar diretamente implementações concretas de outras classes, ela deve trabalhar com abstrações (por exemplo, interfaces ou protocolos). Isto aumenta a flexibilidade e facilita os testes.
Exemplo em Swift (iOS):
protocol DataService {
func fetchData() -> String
}
class APIService: DataService {
func fetchData() -> String {
return "Dados da API"
}
}
class ViewModel {
private let service: DataService
init(service: DataService) {
self.service = service
}
func load() {
print(service.fetchData())
}
}
let apiService = APIService()
let viewModel = ViewModel(service: apiService)
viewModel.load() // Vai imprimir: Dados da API
Aqui, ViewModel depende da abstração DataService, e não de uma implementação concreta APIService. Isto permite substituir facilmente a implementação do serviço, por exemplo, por um mock para testes.