Sobes.tech
Junior — Middle

¿Puede explicar qué se entiende por el principio de inversión de dependencias en la programación orientada a objetos?

sobes.tech AI

Respuesta de la IA

El principio de inversión de dependencias (Dependency Inversion Principle, DIP) es uno de los cinco principios SOLID en programación orientada a objetos. Establece:

  • Los módulos de alto nivel no deben depender de los módulos de bajo nivel. Ambos deben depender de abstracciones.
  • Las abstracciones no deben depender de los detalles. Los detalles deben depender de las abstracciones.

Esto significa que, en lugar de que una clase cree o utilice directamente implementaciones concretas de otras clases, debe trabajar con abstracciones (por ejemplo, interfaces o protocolos). Esto aumenta la flexibilidad y facilita las pruebas.

Ejemplo en Swift (iOS):

protocol DataService {
    func fetchData() -> String
}

class APIService: DataService {
    func fetchData() -> String {
        return "Datos de la 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()  // Imprimirá: Datos de la API

Aquí, ViewModel depende de la abstracción DataService, y no de la implementación concreta APIService. Esto permite reemplazar fácilmente la implementación del servicio, por ejemplo, con un mock para pruebas.