Pregunta

Después de leer un tiempo y ver videos de Google IO, todavía estoy confundido sobre cómo MVP se relaciona con la actividad y los lugares.

Encontré un hilo publicado hace un tiempo ->GWT 2.2 MVP vs. GWT 2.1 Actividades-lugares

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

También escucho que "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 cómo organizamos nuestro proyecto para que podamos probar y organizar el 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 toda la confusión.

¿Fue útil?

Solución

TL; DR: Los lugares y las actividades de ninguna manera están relacionadas con MVP.

Lugares se trata de navegar en su aplicación: va de un lugar a otro. Y las actividades se basan en los lugares para ayudar a vincular "lo que ve" con "dónde estás":

  • Cuando estoy en la página de inicio por ello, la parte principal muestra la lista de preguntas en todos los temas, la parte superior del lado derecho muestra mis etiquetas favoritas y me ayuda a configurar los filtros de etiquetas, luego a continuación hay una adición, y debajo de la adición. es una lista de etiquetas recientes, luego una lista de insignias recientes.
  • En esta página de la pregunta, la parte principal muestra la pregunta y sus respuestas, la parte superior del lado derecho se reemplaza a Infos en las etiquetas de la pregunta, seguida de una adición, preguntas vinculadas y luego preguntas relacionadas.

Cada una de estas "partes (región) es administrada por ActivityManagers que escucha PlaceChangeEvents y preguntar a su asociación ActivityMapper cual Activity Para 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 haga que sus "presentadores" de actividades, en control de una "vista" (la actividad pasará a la AcceptsOneWidget recibido en argumento a su start método). Sin embargo, esta no es una regla y, por ejemplo, Google es experimentación, en la muestra de MobileWebApp, con actividades de desacoplamiento y presentadores.

Otros consejos

MVP representa Modelo, Vista, Presentador, es un patrón de codificación. Es solo una evolución del MVC (Modelo, Vista, Controlador) patrón. Ver MVC Wikipedia Página.

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

Algunas personas han creado marcos para reducir la cantidad de trabajo para organizar su código de esta manera. Eche un vistazo a diferentes implementaciones MVP. 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 mediante otra implementación (generalmente un simulacro) que fingirá 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 sus pruebas se ejecutarán más rápido.

La documentación de Google dice:

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

Por lo tanto, las actividades y lugares son mucho más que un marco MVP. Sin embargo un 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 debería codificar un tipo de gerente de actividades propio que sea responsable de comenzar y detener sus actividades. En Start and Stop, probablemente desee crear su vista, agregarla al DOM, registrar sus manejadores de eventos, etc. y querrá destruir todo esto cuando se detenga.

En algunas otras implementaciones de MVP, puede encontrar métodos Bind () y Unbind () que tienen el mismo papel.

El poder de la implementación del lugar de actividad de Google proviene de todos los objetos detrás del Lugar Objeto que hará que su actividad comience o se detendrá y que manejará la historia.

los Lugar Como otras personas mencionadas anteriormente es solo una representación de su URL.

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

enter image description here

Las actividades son presentadores. Los lugares son solo un envoltorio para la ficha de historia.

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

Entonces, si desea seguir la ruta MVP, necesita 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 preocupaciones y actividades y lugares es una herramienta para la gestión de la URL y la historia.

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

Hay dos patrón de diseño de dimensiones independientes, sin patrón - MVP

Navegación y traversal de pantalla - sin navegación - actividades y lugares

Puede tener una aplicación que pueda seguir una de las siguientes

  • Sin MVP, sin actividades y lugares
  • Solo MVP
  • Solo actividades y lugares
  • MVP con actividades y lugares
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top