Carlos Arboleda
https://carlosarboleda.co
GDG Cali
Icons made by Pixel perfect from Flaticon
@cfarboleda
GDG Cali
Carlos Fernando Arboleda Garcés
GDG Cali
Cómo gestionas las dependencias en tu proyectos?
Nivel de experiencia
GDG Cali
Conceptualización
https://developer.android.com/jetpack/guide#recommended-app-arch
Arquitectura recomendada para aplicaciones Android
GDG Cali
Conceptualización
Iconos diseñados por Freepik
1. Inversión de control
2. Inversión de dependencias
3. Inyencción de dependencias
data class Harina(){
var store = Carulla()
}
data class Harina(
var store: Carulla
)
data class Harina(
var store: Carulla
)
data class Harina(
var store: Store
)
GDG Cali
Diagrama de clases del ejemplo
Pizza
Masa
Ingredientes
Harina
Agua
Aceite
Sal
Levadura
Salsa
Jamón
Piña
Queso
Peperoni
Collection
Creando dependencias manualmente
GDG Cali
val masa = Masa(
Harina(500),
Sal(10),
Levadura(20),
Aceite(50),
Agua(300)
)
val ingredients: List<Ingredient> = listOf(
Salsa(200),
Pina(400),
Jamon(30),
Queso(300),
)
val pizza = Pizza("Hawaiana", masa, ingredients)
Creando dependencias manualmente
GDG Cali
const api = new Api(new AxiosRequestClient());
const authSpotify = new AuthSpotify(api);
const authUseCase = new AuthUseCase(authSpotify);
const getAllAlbumsByArtistIdSpotify = new GetAllAlbumsByArtistIdSpotify(api);
const getAllAlbumsByArtistIdUseCase = new GetAllAlbumsByArtistIdUseCase(
getAllAlbumsByArtistIdSpotify
);
const getSongsByAlbumIdSpotify = new GetSongsByAlbumIdSpotify(api);
const getSongsByAlbumIdUseCase = new GetSongsByAlbumIdUseCase(
getSongsByAlbumIdSpotify
);
const deleteAllSongsMongodb = new DeleteAllSongsMongodb(database);
const deleteAllSongsUseCase = new DeleteAllSongsUseCase(deleteAllSongsMongodb);
const repository = new SaveSongsMongodb(database);
const useCase = new PopulateUseCase(
repository, authUseCase, getAllAlbumsByArtistIdUseCase,
getSongsByAlbumIdUseCase, deleteAllSongsUseCase
);
await useCase.exec(...);
Inyectando dependencias mediante un contenedor de dependencias
GDG Cali
Dagger ¬
Dagger Hilt ¬
Koin
👑
Qué es Dagger Hilt?
GDG Cali
Es una librería de inyección de dependencias construida sobre Dagger que provee una forma estándar para incluir Dagger en una aplicación Android
https://developer.android.com/training/dependency-injection/hilt-android#hilt-and-dagger
Por qué nace Dagger Hilt?
GDG Cali
Qué ventajas ofrece Dagger Hilt?
GDG Cali
Dagger Hilt core API
GDG Cali
https://dagger.dev/hilt/components
Components and scopes
Dagger Hilt core API
GDG Cali
https://dagger.dev/hilt/components
Otras anotaciones importantes
A codear...
GDG Cali
GDG Cali
Conclusiones
GDG Cali
Referencias
@cfarboleda