Pregunta

Tengo una idea bastante buena de cómo cada una de estas modalidades de trabajo y saben acerca de algunas de las diferencias menores entre ellos, pero ¿son realmente tan diferentes unos de otros?

Me parece que el presentador, Presentación modelo, modelo de vista y el controlador son esencialmente el mismo concepto.

¿Por qué no puedo clasificar todos estos conceptos como los controladores? Siento como que podría simplificar todo la idea de un buen negocio.

Puede alguien dar una descripción clara de sus diferencias?

Quiero aclarar que yo no entiendo cómo el trabajo de los patrones, y han aplicado la mayoría de ellos en una u otra tecnología. Lo que busco realmente es la experiencia de alguien con uno de estos patrones, y por qué no considerar su modelo de vista de un controlador, por ejemplo.

Voy a dar algunos puntos de reputación para esto, pero yo estoy buscando una respuesta muy buena.

¿Fue útil?

Solución

Además de la gran ya se ha mencionado lee (Fowler y Miller) y para responder a su punto en las diferencias entre el controlador / presentador / ... desde el punto de vista del desarrollador

Controller en MVC :

  • controlador es el componente real que es llamada como resultado de la interacción del usuario. (Desarrollador no tiene que escribir código para delegar las llamadas al controlador.)

  • controlador recibe los valores actuales de alguna manera de la vista / contexto / bolsa / lo que sea, pero sería en realidad no decir que interactúa con la vista.

  • controlador decide en el extremo que se vista para mostrar de nuevo al usuario. En eso, Controlador muestra una noción explícita de navegación de aplicaciones de flujo de trabajo también.

Presentador en MVP :

  • Presentador tiene métodos llamados por la vista, que es el control de recepción componente real sobre la interacción del usuario. (Desarrollador tiene que escribir algo de código en la vista con el fin de llamar al presentador.)

  • Presentador recibe los valores actuales de alguna manera de la vista o los reciben desde la vista previa convocatoria. Presentador llama a los métodos de la vista con el fin de establecer su estado ( poblarlo , dice Josh Smith). Una visión método llamado por el presentador podría tener varios ajustes pequeños a cabo en su cuerpo.

  • Presentador no muestra explícitamente una noción de flujo de trabajo de la aplicación. Por lo general se piensa en como devolver el control a la vista llamando.

PresentationModel en PM

  • PresentationModel tiene métodos llamados por la vista, que es el control de recepción componente real sobre la interacción del usuario. (Desarrollador tiene que escribir algo de código en la vista con el fin de llamar la PresentationModel.)

  • PresentationModel tiene un hablador comunicación mucho más con Vista en comparación con un presentador. También contiene más lógica con el fin de averiguar el valor de todas las configuraciones para aplicar en la vista, y para la creación efectiva los de la vista. (Esos métodos Ver en turnos no tienen casi ninguna lógica.)

  • PresentationModel no muestra explícitamente una noción de flujo de trabajo de la aplicación. Por lo general se piensa en como devolver el control a la vista llamando.

ViewModel en MVVM :

  • ViewModel tiene métodos llamados (y propiedades de deformación) por la vista, que es el control de recepción componente real sobre la interacción del usuario. (Desarrollador tiene que escribir algo de código (declarativa) en la vista con el fin de llamar al modelo de vista.)

  • modelo de vista no tiene una comunicación explícita hablador con vistas comparación con PresentationModel (es decir, que no llame Ver mucho, el marco lo hace). Pero tiene una gran cantidad de propiedades que se asignan 1 a 1 con la configuración de Vista. Todavía contiene la misma lógica de averiguar el valor de todos esos ajustes.

  • modelo de vista no muestra explícitamente una noción de flujo de trabajo de la aplicación. Por lo general se piensa en como devolver el control a la vista llamando.

  • Copia de alguna manera lo que dice Josh Smith ( http: // MSDN. microsoft.com/en-us/magazine/dd419663.aspx ): patrón MVVM es un caso especial de PM que se aprovecha de un marco (como WPF / SL) con el fin de escribir menos código.

Otros consejos

Martin Fowler tiene una página en los patrones de diseño de interfaz de usuario, en el que define y luego habla de MVC, MVP y otros patrones.

http://martinfowler.com/eaaDev/uiArchs.html

A Controller está activo en el control de la interfaz de usuario. Por ejemplo, sería manejar cualquier acontecimientos desencadenados por la interfaz de usuario y tratar con ellos adecuadamente.

Presentador en el otro lado es más pasivo, y simplemente muestra los datos a través de la interfaz de usuario, que se ocupa de su propios eventos, etc., o los delegados a través de la presentadora de un servicio o de comandos.

A ViewModel es un ejemplo específico de un presentador, diseñado para su uso con la unión WPF / Silverlight.

Presentación Modelo es un modelo que puede ser presentada directamente por la vista, así que por ejemplo si sus modelos implementan INotifyPropertyChanged para el enlace de datos, que serían Presentación modelos.

La diferencia entre ellos es esencialmente en la cantidad de código de la vista. La elección entre ellos es de hecho una elección de la tecnología de aplicación, como el PMA, WinForms, ASP MVC (2). La idea básica de separar la lógica de presentación es la misma.

Aquí es muy buen artículo sobre los tres.

EDIT:

Una artículo más -. Comparación

Al menos en .Net, MVP se usa como un patrón de diseño. Esto por lo general se utiliza con aplicaciones de Windows Forms, o ASP.Net clásico. Con MVC, y MVVC, estos se utilizan por lo general con ASP MVC, que utiliza una arquitectura bastante diferente de ASP.Net normal.

En mi opinión, no hay diferencias conceptuales reales entre MVP, MVVC, MVC y Presentación Modelo. Hay algunas diferencias de detalle, pero al final, todo se puede seguir siendo considerado como una configuración de Modelo Vista Controlador. El nombramiento extra sólo sirve para crear confusión, y yo creo que sería mejor adoptar una terminología que permite una cierta libertad en la descripción de un controlador.

Una importante distinción sólo entre MVP y MVVM es la forma en que la vista no tiene un papel activo en la actualización de la capa media, y es un actor "tonto" como una vista debería ser para la exhibición, no comportamiento. Presentador se recomienda para las vistas que son "complejas", es decir:.

  • cuando manipule clic mediante el cambio de actividad ( “navegación”) es más fácil con el presentador
  • Modificación de vista cambia de acuerdo con la actualización capa de datos (asynch) se llevará a cabo mejor con ViewModel

refs:

https://developer.android.com/topic/libraries / arquitectura / ciclo de vida # lc-pb

https: //android.jlelse .eu / qué-a-elegir-MVVM-sobre-MVP-android-arquitectura-33c0f2de5516 introducir descripción de la imagen aquí

introducir descripción de la imagen aquí

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top