rxjava - mvp course android
Reglas de Dependencia de MVP de Android (1)
He leído y probado mucho sobre los patrones de MVP en Android, pero estoy aquí para preguntarle su opinión sobre cuál podría ser la mejor práctica si quiero respetar tanto la "Regla de dependencia" como el patrón de MVP.
Cómo se explica en muchos artículos (ver este enlace: http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/ ), nuestra aplicación debe dividirse en capas y solo una capa externa puede crear instancias y usar una capa interna. La capa interna recibe todos los parámetros (Variables, contextos, Vistas, etc.) y devuelve respuesta o utiliza devoluciones de llamada, etc.
También es una buena práctica aislar las capas cuanto más pueda, mediante el uso de interfaces y llamando directamente a las interfaces en lugar de clases. (ver el enlace: http://www.tinmegali.com/es/model-view-presenter-mvp-in-android-part-2/ ). En el enlace de arriba, el autor especifica que no usa métodos de devolución de llamada sino interfaces para pasar de una capa interna a una externa (que no respeta la regla de dependencia).
Mis preguntas sobre esto son dos:
1) ¿es mejor utilizar la interfaz para la clase llamante (la capa externa se refiere a la interfaz de la clase llamada) y la clase llamada (la capa interna se refiere a la interfaz de la llamada de clase) o solo es necesaria en una dirección? , por ejemplo, ¿solo la clase exterior se refiere a la interfaz del interior ?
2) porque la capa externa (la IU) crea todas las capas internas y mediante una simple rotación de pantalla se destruye y recrea, ¿es mejor (para la fuga de memoria) guardar el estado (cuando es necesario), destruir clases internas y procesos, y recrearlos, o para interactuar de manera estática (a través de Singleton o como instancias de una clase que extiende la clase de Aplicación) todas las clases que necesitan "sobrevivir" a la pantalla de rotación? ¡Gracias a todos!
Creo que MVP es de alguna manera un desarrollo de Tuxedo, lo que significa que debe separar todo y usar interfaces para declarar diferentes métodos antes de implementarlos. ¡Así que mi respuesta a tu primera pregunta es SÍ!
Por lo general, en este tipo de situaciones, creo que soy yo quien define las capas y otro desarrollador junior está a punto de usar el núcleo que he desarrollado, por lo tanto, es mejor limitar su acción y disminuir sus fallas y errores.
Acerca de la recreación, sugeriría utilizar Dagger de manera adecuada, lo que realmente le impide recrear objetos que se han generado antes solo debido a una rotación de pantalla. Puede mantener las declaraciones de capas inferiores en la memoria y adjuntarlas a su nueva vista después de la rotación.
Sugiero echar un vistazo a este repositorio de muestra que he desarrollado usando MVP, Dagger, RxJava y Retrofit para familiarizarme con las mejores prácticas y los nuevos métodos de desarrollo de Android:
Espero que ayude :)