in

controlador de vista de modelo: ¿cuál es la diferencia entre MVC y MVVM?

apple touch icon@2

Las otras respuestas pueden no ser fáciles de entender para alguien que no esté muy familiarizado con el tema de los patrones arquitectónicos. Alguien que sea nuevo en la arquitectura de aplicaciones puede querer saber cómo su elección puede afectar su aplicación en la práctica y de qué se trata todo el alboroto en las comunidades.

Tratando de arrojar algo de luz sobre lo anterior, inventé este guión que involucra MVVM, MVP y MVC. La historia comienza cuando un usuario hace clic en el botón ‘ENCONTRAR’ en una aplicación de búsqueda de películas …:

Usuario: haga clic en …

Vista: ¿Quién es ese? [MVVM|MVP|MVC]

Usuario: Acabo de hacer clic en el botón de búsqueda …

Vista: Ok, espera un segundo…. [MVVM|MVP|MVC]

( Vista llamando al ViewModel|Presentador|Controlador …) [MVVM|MVP|MVC]

Vista: Oye ViewModel|Presentador|Controlador, un usuario acaba de hacer clic en el botón de búsqueda, ¿qué debo hacer? [MVVM|MVP|MVC]

ViewModel|Presentador|Controlador: Oye Vista, ¿hay algún término de búsqueda en esa página? [MVVM|MVP|MVC]

Vista: Sí, … aquí está … «piano» [MVVM|MVP|MVC]

—— Ésta es la diferencia más importante entre MVVM Y MVP|MVC ———

Presentador|Controlador: Gracias Vista,… Mientras tanto, busco el término de búsqueda en el Modelo, enséñele una barra de progreso [MVP|MVC]

( Presentador|Controlador está llamando al Modelo …) [MVP|MVC]

ViewModel: Gracias, buscaré el término de búsqueda en el Modelo pero no lo actualizará directamente. En su lugar, activaré eventos para searchResultsListObservable si hay algún resultado. Así que será mejor que observes eso. [MVVM]

(Mientras observa cualquier disparador en searchResultsListObservable, el Vista cree que debería mostrar una barra de progreso al usuario, ya que ViewModel no le hablaría sobre eso)

—————————————————————————————

ViewModel|Presentador|Controlador: Oye Modelo, ¿Tiene alguna coincidencia para este término de búsqueda ?: «piano» [MVVM|MVP|MVC]

Modelo: Oye ViewModel|Presentador|Controlador, dejame revisar … [MVVM|MVP|MVC]

( Modelo está realizando una consulta a la base de datos de películas …) [MVVM|MVP|MVC]

( Después de un tiempo … )

———— Este es el punto divergente entre MVVM, MVP y MVC ————–

Modelo: Encontré una lista para ti, ViewModel|Presentador, aquí está en JSON «[{“name”:”Piano Teacher”,”year”:2001},{“name”:”Piano”,”year”:1993}]» [MVVM|MVP]

Modelo: Hay algún resultado disponible, Controlador. He creado una variable de campo en mi instancia y la he llenado con el resultado. Su nombre es «searchResultsList» [MVC]

(Presentador|Controlador Gracias Modelo y vuelve al Vista) [MVP|MVC]

Presentador: Gracias por esperar Vista, Encontré una lista de resultados coincidentes para ti y los ordené en un formato presentable: [“Piano Teacher 2001″,”Piano 1993”]. También oculte la barra de progreso ahora [MVP]

Controlador: Gracias por esperar Vista, Le pregunté a Model sobre su consulta de búsqueda. Dice que ha encontrado una lista de resultados coincidentes y los ha almacenado en una variable llamada «searchResultsList» dentro de su instancia. Puedes conseguirlo desde ahí. También oculte la barra de progreso ahora [MVC]

ViewModel: Cualquier observador en searchResultsListObservable será notificado de que existe esta nueva lista en formato presentable: [“Piano Teacher 2001″,”Piano 1993”].[MVVM]

Vista: Muchas gracias Presentador [MVP]

Vista: Gracias «Controlador» [MVC] (Ahora el Vista se está cuestionando: ¿Cómo debo presentar los resultados que obtengo de la Modelo al usuario? ¿Debería ser el año de producción de la película el primero o el último…?)

Vista: Oh, hay un nuevo disparador en searchResultsListObservable…, bueno, hay una lista presentable, ahora solo tengo que mostrarlo en una lista. También debería ocultar la barra de progreso ahora que tengo el resultado. [MVVM]

Por si te interesa, he escrito una serie de artículos aquí, comparando MVVM, MVP y MVC mediante la implementación de una aplicación para Android de búsqueda de películas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

basic bread fabrication

Operaciones alimentarias: introducción a la panadería

RAiLznD7TsqLov9Xgb6ZyM 1200 80

Uncharted podría estar regresando, pero ¿debería ser con Naughty Dog?