Saltar al contenido principal

Dependency Inversion Principle

Principio de inversión de dependencia

Los sistemas más flexibles son aquellos en los que las dependencias del código fuente se refieren solo a abstracciones, no a concreciones

Robert C. Martin

Este principio establece que nuestro código debe basarse en el comportamiento de nuestro código en lugar de los detalles de implementación.

Un ejemplo de esto es obtener datos de una base de datos, como desarrollador, como cliente o como usuario realmente no nos importa "dónde" obtengo la información, el comportamiento es "Como usuario quiero ver una lista de todos mis pedidos", el la aplicación podría almacenarlos en un solo archivo .json, en una base de datos de documentos como MongoDB o en una base de datos SQL como SQLite o PostgreSQL.

Todos estos mecanismos de almacenamiento son detalles de implementación y nuestro código no debería confiar en ellos, debería basarse en la abstracción de que "Necesito recibir los pedidos".

Ahora, depender totalmente de componentes abstractos es imposible ya que tenemos tipos de datos primitivos como string, int o float, pero la diferencia es que estos componentes son estables, no cambian, por lo que podemos confiar en Componentes estables como primitivos, interfaces, clases abstractas y DTO.

¿Cómo podemos usar cosas como bases de datos si esos son componentes volátiles?

Creas abstracciones que describen el comportamiento y hacen que tu programa confiar en ese comportamiento, esta abstracción podría ser Fábricas, Repositorios o Fachadas.