2011-06-14 5 views
21

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.Confusión en todo el GWT MVP vs Activity and Places

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

"arquitectura MVP MVP es el concepto, y una de las maneras de hacerlo es el marco Places actividades."

I también escuchar "un presentador es análogo a una actividad"

podemos dio "Actividad y sobre MVP"

podemos mezclar en "Actividad y Lugares con el MVP"

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

Entonces estoy tratando de averiguar 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.

Respuesta

21

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

Lugares se trata de navegar en su aplicación: va de un lugar a otro. Actividades y construye en la parte superior de Lugares para ayudar en la unión "lo que se ve" con "dónde estás":

  • cuando estoy en la página principal para el SO, la parte principal muestra la lista de preguntas en total temas, la parte superior del lado derecho muestra mis etiquetas favoritas y me ayuda a configurar los filtros de etiquetas; a continuación, aparece un complemento, y debajo del agregado hay 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 de las etiquetas de la pregunta, seguidas por un complemento, las preguntas vinculadas y las preguntas relacionadas.

Cada una de estas "partes" (región) son gestionados por ActivityManager s que escuchan PlaceChangeEvent s y piden a sus asociados, que ActivityMapperActivity para mostrar en esa región.

Todo se trata de navegación.

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

+0

"si utiliza MVP", ¿qué quiere decir con eso exactamente ? ¿Como si separara solo a los model-view-presentadores por mi cuenta y los hiciera interactuar con una interfaz con mis propias implementaciones? –

+0

Si las actividades son Presentadoras, ¿no es una relación? : | –

+1

Re. "si usas MVP": MVP es un patrón, así que quise decir "pones la lógica de presentación en tu actividad (es decir, la conviertes en presentadora) y tu vista en otra clase". Re. En su segundo comentario, si digo "las vistas generalmente serán' Composite's ", ¿eso hace que' Composite' esté relacionado con MVP? Tal vez sea más claro si digo MVP y las actividades son preocupaciones ortogonales (uno es un patrón de codificación, el otro es un toolkit/micro-framework sobre la navegación dentro de la aplicación) –

7

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 de 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.

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

2

Mientras piense 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í es un buen artículo para ayudar a aclarar cualquier confusión, MVP, Activities and Places Confusion

9

MVP representa Modelo, Ver, Presentador, se trata de un patrón de codificación. Es solo una evolución del MVC (Modelo, Ver, Controlador) patrón. Ver MVC wikipedia page.

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.

documentación Google dice:

El marco de actividades y lugares le permite crear direcciones URL bookmarkable dentro de su aplicación.

Así que Activities and Places es mucho más que un framework de MVP. Sin embargo, Actividad es Presentador.

public interface Activity { 

    String mayStop(); 

    void onCancel(); 

    void onStop(); 

    void start(AcceptsOneWidget panel, EventBus eventBus); 
} 

Puede utilizar la interfaz de Actividad para sus presentadores sin utilizar 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á que su actividad comience o se detenga y que manejará el historial.

Lugar como otras personas mencionadas anteriormente son 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. You can find some more details on my blog in this article

enter image description here

0

Hay dos dimensiones independientes Diseño Modelo - No hay un patrón - MVP

de navegación y la pantalla de recorrido - n navegación - actividades y lugares

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

  • Sin MVP, pero no los Actividades y lugares
  • Sólo MVP
  • Sólo Actividades y lugares
  • MVP con actividades y lugares