Junior — Middle
¿Puedes dar un ejemplo de implementación del principio de inversión de dependencias en un proyecto?
sobes.tech AI
Respuesta de la IA
El principio de inversión de dependencias (Dependency Inversion Principle, DIP) establece que los módulos de nivel superior no deben depender directamente de los módulos de nivel inferior, sino que ambos deben depender de abstracciones (por ejemplo, protocolos o interfaces).
Ejemplo en Swift para iOS:
// Abstracción
protocol DataService {
func fetchData() -> String
}
// Implementación concreta
class NetworkDataService: DataService {
func fetchData() -> String {
return "Datos de la red"
}
}
// Clase que depende de la abstracción, no de la implementación 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()) // Imprime: Datos de la red
Aquí, ViewModel depende del protocolo DataService, no de la clase concreta NetworkDataService. Esto permite cambiar fácilmente la implementación del servicio, por ejemplo, para pruebas o para otra fuente de datos, sin modificar el código de ViewModel.