Aplicando el Principio de Inversión de Dependencia en Flutter

Aplicando el Principio de Inversión de Dependencia en Flutter

¿Qué es el Principio de Inversión de Dependencia?

El Principio de Inversión de Dependencia (DIP) dice que:

  1. Las clases de alto nivel (la lógica de tu app) no deben depender de detalles concretos (como servicios de autenticación por ejemplo).
  2. Ambos deben depender de abstracciones (interfaces o clases abstractas).

Esto te permite cambiar los detalles de implementación sin afectar la lógica principal de tu aplicación.

¿Por qué es útil en Flutter?

Aplicar este principio en Flutter te permite crear código más fácil de probar, modificar y mantener. Por ejemplo, puedes cambiar cómo manejas la autenticación (Firebase, OAuth, etc.) sin modificar la lógica de negocio principal.

Ejemplo Práctico

Supongamos que tienes una aplicación con autenticación de usuarios, usando inicialmente Firebase. Sin DIP, estarías atado a esa implementación, pero al aplicar DIP, puedes cambiar el servicio sin modificar tu lógica de autenticación.

Sin DIP

Aquí, AuthService depende directamente de Firebase. Si quisieras cambiar el servicio de autenticación en el futuro, tendrías que modificar esta clase.

Con DIP

Para aplicar DIP, creamos una abstracción (interface) que defina el contrato para la autenticación.

Luego, creamos implementaciones concretas (FirebaseAuthRepository y OAuthAuthRepository) que dependen de esa abstracción:

Ahora Autenticacion depende de la abstracción AuthRepository, lo que te permite cambiar entre Firebase, OAuth u otros servicios de autenticación fácilmente.

Inyección de Dependencias con Provider

Para inyectar las dependencias en Flutter, podemos usar el paquete Provider. Esto permite que AuthRepository y la lógica de Autenticación estén disponibles en toda la aplicación y sean fácilmente intercambiables.

En este ejemplo:

  1. Estamos inyectando una instancia de FirebaseAuthRepository como implementación de AuthRepository.
  2. También inyectamos la clase Autenticacion, que depende de la abstracción AuthRepository.

Si más adelante decides cambiar a OAuthAuthRepository u otro repositorio para autenticación, solo tienes que actualizar la implementación en el Provider:

Conclusión

El Principio de Inversión de Dependencia (DIP) te permite crear aplicaciones más flexibles y fáciles de mantener. Combinado con Provider para inyección de dependencias, puedes cambiar fácilmente implementaciones de servicios (como la autenticación) sin tocar la lógica principal de tu aplicación, lo que da lugar a un código más limpio, modular y fácil de probar.

Inicia sesión para ver o añadir un comentario.

Más artículos de Carlos Pérez Sarmiento

Otros usuarios han visto

Ver temas