Generalidades

Android – Desmitificando Clean Architecture | DevPicon by Armando Picón | Armando | Diciembre 2021

Armando Picon
Android Desmitificando Clean Architecture DevPicon by Armando Picon

Si es tuprimera vez leyendo sobre Arquitectura limpia quizás te convenga saber algunas cosillas antes de seguir:

Básicamente, es una estructura, una manera de distribuir los componentes que conforman una aplicación en distintas agrupaciones. Por esto mismo, no existe una única manera de Organizar tu proyecto. Diversos aspectos como el estado de tu proyecto, el tamaño de tuequipo, el tiempo, etc.

Mucho se ha dicho y escrito sobre cómo aplicar Arquitectura limpia en las aplicaciones que desarrollamos, un buen número de desarrolladores te hablarán sobre Separación de preocupaciones y pruebas como las principales características de seguir estos principios, suelen a su vez olvidar un aspecto muy importante sobre Arquitectura limpia y que consite en que su base yace en la implementación de la capa de Dominio.

Dicho esto ¿Cómo se estructuraría un proyecto base siguiendo estos principios? Para trabajar en esto es importante establecer dos thinkaciones importantes:

LEER  Refleja el método de matriz nativo.Pensemos en qué son los métodos de matriz ... | Autor: Selahattindemir | Diciembre de 2021

Teniendo encuenta estos dos aspectos, para una estructura básica contaríamos con tres módulos: Reunión de promoción, campodatos.La relación entre estos sería de la siguiente manera:

Es importante reiterar que al hablar de arquitectura, hablamos deorganización y estructura, por lo tanto, la distribución y qué componentes en específico irán en cada módulodependenterá del patrón que decidas emplear y de el propólodu

Seguramente aquí te podría surgir la siguiente duda: si campo Cielo invisible datos ¿ ¿cómo es que podríamos inyectar los repositorios en nuestros casos de uso? La respuesta se encuentra en el principio de Inversión de Dependencia (Inversión de dependencia) Sólido alemán.

Este principio de SOLID establece dos consignas:

Teniendo en mente esto, nuestro módulo campo deberá ser propietario de la interfaz del repositorio que se implementó dentro del módulo datos.

En código esto luciría más o menos de la siguiente manera, en el módulo campo Estaría la abstracción de un BookRepository.

interface BookRepository {
suspend fun getBooks():List
}
class GetBooksUseCase(
private val bookRepository: BookRepository
) { /*...*/ }

Mientras que en el módulo datos iría su implementación.

class BookRepositoryImpl (...) : BookRepository {
override suspend fun getBooks(): List { /* ... */}
}

De este modo al momento de crear una instancia de nuestro caso de uso le podremos inyectar la deploymentación debido a la interfaz que hems declarado.

Podría mencionar algunas cosas como parte de la conclusión:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba