gwt mvp gwt-places gwt-activities

Confusión alrededor de todo el GWT MVP vs Actividad y Lugares



gwt-places gwt-activities (5)

Hay dos dimensiones independientes Patrón de diseño - Sin patrón - MVP

Navegación y recorrido de pantalla - Sin navegación - Actividades y lugares

Puede tener una aplicación que puede seguir uno de los siguientes

  • Sin MVP, sin actividades y lugares
  • Solo MVP
  • Solo actividades y lugares
  • MVP con actividades y lugares

Después de leer un rato y ver videos de Google IO, todavía estoy confundido sobre cómo MVP se relaciona con Activity and Places.

Encontré un hilo publicado hace un tiempo -> GWT 2.2 MVP vs. GWT 2.1 Activities-Places

"MVP architecture. MVP es el concepto, y una de las formas de hacerlo es el marco de lugares y actividades"

También escuché "Un presentador es análogo a una actividad"

Podemos dar "Actividad y lugares sin MVP"

Podemos mezclar "Actividad y Lugares con MVP"

"MVP no es más que la forma en que organizamos nuestro proyecto para que podamos probar y organizar código fácilmente"

Entonces estoy tratando de descubrir cosas como esta -> http://code.google.com/p/gwt-platform/

Estoy realmente confundido. Me gustaría un hilo de una parada para terminar con toda la confusión.


Las actividades son Presentadores. Los lugares son solo un contenedor para token de historial.

La confusión comenzó con Google IO video, donde se introdujo el concepto MVP GWT, pero no se implementó. Entonces la gente comenzó a rodar la suya. Luego Google escribió los 2.1 documentos donde detallaron el concepto y solo dieron un código de ejemplo para descargar. Más tarde en 2.2 introdujeron su implementación completa, Activities et al.

Entonces, si quiere ir a la ruta MVP, debe elegir su implementación. Las actividades probablemente serían las mejores, ya que es la oficial.


Mientras pienses en ellos como dos patrones de desarrollo, es bastante fácil mantenerlos separados. MVP es un patrón para la separación de inquietudes y Activities and Places es una herramienta para la administración de URL e historial.

Aquí hay un buen artículo para ayudar a aclarar confusión, MVP, actividades y lugares confusos


MVP significa Modelo , Vista , Presentador , es un patrón de codificación. Es solo una evolución del patrón MVC ( Modelo , Vista , Controlador ). Ver la página wikipedia MVC .

La diferencia entre MVP y MVC es que en MVP, el modelo y la vista no se conocen entre sí. En MVP tu vista debería ser lo más estúpida posible. Todas las interacciones son manejadas por el presentador. Es solo una forma de organizar tu código correctamente.

Algunas personas han creado marcos para reducir la cantidad de trabajo que se debe hacer para organizar su código de esta manera. Eche un vistazo a las diferentes MVPplementaciones. Es fácil encontrarlos en la web.

MVP hace que su código sea más fácil de probar ya que puede reemplazar fácilmente su vista por otra implementación (generalmente un simulacro) que simulará el comportamiento o su vista. Por lo tanto, no necesita ejecutar sus pruebas con un entorno de navegador (las vistas GWT son vistas HTML). Entonces tus pruebas se ejecutarán más rápido.

La documentación de Google dice:

El marco de Actividades y lugares le permite crear URLs marcables dentro de su aplicación.

Entonces, Activities and Places es mucho más que solo un framework de MVP. Sin embargo, una actividad es un presentador .

public interface Activity { String mayStop(); void onCancel(); void onStop(); void start(AcceptsOneWidget panel, EventBus eventBus); }

Puede usar la interfaz de Actividad para sus presentadores sin usar Lugares y otros objetos de Google. Pero en ese caso, probablemente deba codificar un tipo de Administrador de actividades propio que será responsable de iniciar y detener sus actividades. Al inicio y al final, probablemente desee crear su vista, agregarla al dom, registrar sus controladores de eventos, etc. Y deseará destruir todo esto cuando se detenga.

En algunas otras implementaciones de MVP, puede encontrar los métodos bind () y unbind () que tienen el mismo rol.

El poder de la implementación de Activity Place de Google proviene de todos los objetos detrás del objeto Place que harán que su actividad comience o se detenga y eso manejará el historial.

The Place como otras personas mencionadas anteriormente es solo una representación de su URL.

Hay muchos objetos involucrados en la implementación de Activity Place de google. Aquí hay un esquema para ayudarlo a comprender. Verás que la actividad es solo una pequeña parte de todo. Puedes encontrar más detalles en mi blog en este artículo


TL; DR: Lugares y Actividades no están de ninguna manera relacionados con MVP.

Lugares se trata de navegar en tu aplicación: vas de un lugar a otro. Y Activities se basa en Places para ayudar a vincular "lo que ves" con "donde estás":

  • cuando estoy en la página de inicio para SO, la parte principal muestra la lista de preguntas en todos los temas, la parte superior derecha muestra mis etiquetas favoritas y me ayuda a configurar los filtros de etiquetas, a continuación aparece un complemento y debajo del complemento es una lista de etiquetas recientes, luego una lista de insignias recientes.
  • en esta página de preguntas, la parte principal muestra la pregunta y sus respuestas, la parte superior del lado derecho se reemplaza con las informaciones en las etiquetas de la pregunta, seguidas por un complemento, las preguntas vinculadas y luego las preguntas relacionadas.

Cada una de estas "partes" (región) son administradas por ActivityManager s que escuchan PlaceChangeEvent y preguntan a su ActivityMapper asociado qué Activity mostrar en esa región.

Se trata de navegación.

No hay relación con MVP (a pesar de lo que dicen los documentos oficiales). Sin embargo, si usa MVP, es probable que le convierta en "presentadores" de actividades, con el control de una "vista" (la que la actividad transferirá a AcceptsOneWidget recibida en argumento para su método de start ). Sin embargo, esto no es una regla, y, por ejemplo, Google está experimenting , en la muestra de mobilewebapp, con actividades de desacoplamiento y presentadores.