franyack / IMachineApp

This Android application uses the CIEngine module to automatically manage the photos and images on the device. Then you will be able to manage the result according to your criteria, by moving or erasing images as you want.
1 stars 0 forks source link

Utilizar arquitectura MVP #15

Closed franyack closed 6 years ago

franyack commented 6 years ago

Ya que no es una buena práctica cargar de lógica a las actividades que se encargan de interactuar con el usuario, se decidió seguir el desarrollo de la aplicación bajo una arquitectura Model-View-Presenter.

En este issue se irán informando los avances con respecto a la adaptación de todo lo realizado hasta el momento hacía este modelo. Buscando información me topé con una guía bastante entendible que además presenta un desarrollo de ejemplo: https://github.com/MindorksOpenSource/android-mvp-architecture. Tomando como referencia esto y trabajando sobre el proyecto https://github.com/franyack/IMachineAppV2 se irán realizando adaptaciones y cambios.

franyack commented 6 years ago

En el siguiente proyecto https://github.com/franyack/IMachineAppV2/tree/mvp-arquitecture (commit 6) se pudo adaptar el desarrollo de la aplicación siguiendo la metodología de desarrollo MVP.

Solo me surge una duda: la clase donde se gestiona toda la información y se resuelve la lógica de la app se llama DataManager. La decisión que tomé fue la de usar sólo esta clase para desarrollar los diferentes métodos que utilizan las activities desarrolladas hasta el momento (MainActivity y ResultsActivity), pero hoy con la adaptación resuelta y pensando un poco me surge la siguiente duda: No debería modularizar y realizar 2 clases diferentes para DataManager, donde en la primera se gestione toda la información necesaria para el MainActivity y en la segunda todo lo relacionado a ResultsActivity? O estaría de alguna manera no respetando la metodología?

franyack commented 6 years ago

Como se puede ver en el commit 9 del repo https://github.com/franyack/IMachineAppV2/tree/mvp-arquitecture, se dividió la gestión de información en 2 clases diferentes (MainActivityModel y ResultsActivityModel). Además, se movió a un package todas las clases que se refieren al procesamiento de las imágenes, sacando las dependencias con Android que tenía con el objetivo de modularizar por un lado el motor de procesamiento y por el otro la aplicación que usa métodos del primero.

leferrad commented 6 years ago

Esto me parece que se logró correctamente. Se puede cerrar este issue?

franyack commented 6 years ago

Si, como decís se pudo lograr, por lo que el issue es cerrado.