Introducción

1

Qué aprenderás sobre Clean Architecture en Android

2

¿Qué es clean architecture?

Repaso de Conceptos Generales

3

Principios SOLID

4

Repository Pattern

Presentación del proyecto

5

Presentación del proyecto: Rick and Morty

6

Uso de RxJava y RxAndroid en el proyecto

Capa de Presentación

7

Introducción a la capa de presentación

8

Implementación de la capa de presentación

9

Solución del reto

Capa de Casos de Uso

10

Introducción a la capa de casos de uso

11

Solución del reto: capa de casos de uso

Capa de Dominio

12

Introducción a la capa de dominio

13

Implementación de la capa de dominio: mappers

14

Migración entidades de framework a dominio

15

Solución del reto: capa de dominio

Capa de Datos

16

Introducción a la capa de datos

17

Implementación de la capa de datos: repositorio

18

Implementación de la capa de datos: fuente de datos

19

Solución del reto: capa de datos

Extras: Migración de Capa de Casos de Uso

20

Migración de la capa de casos de uso

Capa de Framework

21

Introducción a la capa de framework

22

Implementación de Image Manager (Glide)

23

Implementación de Database Manager (Room)

24

Implementación de Request Manager (Retrofit)

Inyección de Dependencias

25

Introducción a la inyección de dependencias

26

Implementación de Dagger (Módulos)

27

Implementación de Dagger (Componente)

28

Solución del reto: inyección de dependencias

Pruebas unitarias a nivel general

29

Implementación de pruebas unitarias (conceptos generales)

30

Pruebas unitarias en la capa de presentación

31

Pruebas unitarias en las capas de casos de uso y datos

Conclusiones

32

Cómo seguir mejorando la arquitectura

Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Introducción a la inyección de dependencias

25/32
Recursos

Aportes 1

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Introducción a la inyección de dependencias

El compilador de Dagger genera código que es usado para crear un grafo, el cual se encargara de resolver nuestras dependencias estas clases son agregadas al class path del IDE durante la compilación usa provided para referenciar las dependencias que son necesitadas en tiempo de compilación y annotationProcessor procesa las notaciones de nuestras clases sin agregarlas al class path.

**Annotations of Dagger **
@Module
Se usa para marcar una clase como proveedora de dependencias ya que dentro contendrá métodos con la notación @Provides de tal forma que al momento de crear una instancia de una clase y esta requiera dependencias dagger sabrá en qué lugar ir a buscar dichos objetos.

@Provides
Cada método utilizando para proveer dependencias deben ser marcados con esta anotación ya que serán los objetos que usará dagger para resolver las dependencias entre nuestras clases. Para evitar el exceso de métodos con esta anotación dagger puede buscar una dependencia en el constructor de la clase simplemente marcándolo con la anotación @Inject.

@Inject
Es la forma en que pedimos dependencias y le comunicamos a Dagger que la clase o campo marcado con esta anotación será parte de la inyección de dependencias. Así, Dagger construirá instancias de estas clases anotadas y satisfará sus dependencias.

@Component
Se usa para marcar a una interfaz como un componente ya que es necesario para que Dagger pueda generar código o mejor dicho una clase con el prefijo Dagger (Si tu declaras un component ExampleApiComponent dagger te va a generar DaggerExampleApiComponent) esta clase generada es la responsable de instanciar una dependencia de nuestro grafo y usarla para inyectarla en los fields marcados con @Inject.

@Singleton
Simplemente se usa para decirle a Dagger que debe crear una sola instancia de un objeto, tal cual el patrón de diseño singleton.

@Named
Hay veces en que debes proveer una misma dependencia con diferentes implementaciones para ello hay que decirle a dagger que instancia es la que necesitamos que sea inyectada.

Básicamente es una forma de nombrar nuestras dependencias y así poder diferenciarlas se deben nombrar en donde se proveen @Provides y en donde se inyectarán @Inject.

@Scope
Es de las anotaciones más poderosas de dagger ya que permite crear custom scopes que son algo parecido a un @Singleton solo que van relacionadas al ciclo de vida de un componente no de la aplicación. Por ejemplo podría crear un @LifeActivity annotation y se usaría para que una instancia viva solo mientras una activity sea requerida.

@Qualifier
El uso de esta anotación tiene sentido cuando tenemos dependencias que se crean de una misma interfaz. Imagina que debes proveer un una instancia de MusicApi y esta tiene dos clases hijas Spotify Api y otra por SoundCloud Api usando qualifier te ayuda a identificar cada una @SpotifyApi @SoundCloudApi y de esta forma decirle a dagger cual es la que debe proveer ya que ambas son del tipo MusicApi. Recuerda que se deben nombrar en donde se proveen @Provides y en donde se inyectarán @Inject.