Cómo separar View y Presenter en Android, mientras que las reacciones sobre las acciones del usuario (parte del presentador de MVP) se configuran en las mismas actividades que muestran los elementos de la GUI (View part of MVP).
"En el presentador de vista de modelo, tal como dicen Martin Fowler o Michael Feathers [2], la lógica de la interfaz de usuario se divide en una clase llamada presentador, que maneja todas las entradas del usuario y que le dice a la vista" tonta "qué y cuándo display "(citado desde aquí ).
Hasta ahora, pensé que una de las principales características de Android es la actividad inteligente que toma medidas, reacciona a ellas y muestra los resultados. ¿El esquema MVP está en contradicción con la filosofía de Android? ¿Tiene sentido tratar de realizarlo en Android? En caso afirmativo, ¿cómo podría hacerse?
programmers
las preguntas hay preguntas más controvertidas "¿en qué piensas ../es bueno o malo ...?", Mientrasstackoverflow
que sería más como "¿Hay ejemplos de mvp en Android"? Para mí ambos lugares están bien.Respuestas:
Las aplicaciones de Android se basan fundamentalmente en Model-View-Controller (MVC): MVP suena igual, aunque no he escuchado el término antes. Las actividades cumplen la función de controlador, las vistas XML son solo eso (aunque puede compilarlas mediante programación en la actividad, es más fácil y sencillo hacerlo en XML) y el modelo que usted mismo escribe. Entonces sí, ese modelo es bastante práctico.
Una posible razón por la que es posible que no haya escuchado mucho sobre este modelo de diseño es que el marco de Android lo obliga a separar la vista. Debido a que la aplicación en dispositivos móviles tiende a ser pequeña, las personas no tienden a usar MVC completo; tienden a las capas de vista y acción, donde la capa de acción realiza gran parte del trabajo (pequeño) del modelo.
Si está escribiendo una aplicación multiplataforma, es posible que desee ver un enfoque de cuatro capas: Ver, Acción, Lógica empresarial y Modelo. Las capas Vista y Acción serían específicas de la plataforma, mientras que la Lógica y el Modelo de Negocio no cambiarían. Básicamente, divide la interacción entre el presentador y el usuario en la capa Acción, que llama a la capa Lógica empresarial para realizar la acción que el usuario desea.
fuente
Action
plataforma de capa (= Presentación) también independiente, al menos, cuando sus diferentes plataformas ofrecen capacidades de IU similares.No tengo ninguna experiencia en programación de Android, pero al echar un vistazo a algunos tutoriales introductorios de programación de Android, no veo una razón por la cual MVP debería ser menos útil como en cualquier otro marco de eventos. La
Activity
clase no es muy diferente deDialog
oForm
en otros marcos, por lo que debería ser fácil crear una clase de "Presentador de actividades" para cualquier subclase de actividad de su aplicación y poner la lógica central allí.Los eventos enviados a su "Actividad" deben delegarse en su presentador, y si su presentador va a enviar eventos por su cuenta o llamará a otras funciones dependientes del sistema, su Actividad debe proporcionar funciones relacionadas a través de la interfaz que comparte con el presentador. Pero eso es básicamente lo mismo que en cualquier otro marco GUI que conozco.
fuente
MVP es definitivamente útil para Android. Ayuda a organizar y probar su código en la unidad. Y la mejor parte es que las personas nuevas que lean su código podrán entender el código y comenzarán a contribuir pronto cuando sepan qué debe ir a dónde. Aquí hay un enlace muy útil para entender MVP con ejemplos .
Aquí hay una breve explicación de los tres componentes de MVP
Ver
En el MVP de Android, una vista contiene dos cosas Actividad: Vista de recursos de Android: Actividad de la interfaz de Java Implementa la Vista y se inyecta a sí misma (Interfaz de vista) en el presentador para que el presentador pueda hablar de la actividad usando la interfaz de vista. Los primeros tres bloques del diagrama muestran la comunicación entre View y The Presenter.
Presentador
Presentador actúa como una capa intermedia entre Ver y Datos / Modelo. Ver (Actividad) ordena al presentador que presente algo y el presentador toma datos de la base de datos / Modelo y devuelve la forma presentable de datos a la Vista. Ver luego se encarga de mostrar esos datos en la pantalla. Y recuerde que Presenter es una clase simple de Java, no debe incluir ninguno de los componentes de Android; de lo contrario, dificultará la prueba unitaria del presentador.
Si desea utilizar la base de datos en el presentador, haga una actividad, cree una instancia de base de datos e inyéctela en el presentador. Esto lo ayudará a burlarse de la base de datos durante las pruebas unitarias y le permitirá probar la lógica empresarial.
Modelo
El modelo en MVP no es más que su fuente de datos. La vista no habla directamente con los datos, sino que le ordena al Presentador que maneje los datos y devuelva la información que se puede mostrar sin ninguna otra modificación.
fuente