Explorando los patrones de diseño MVC, MVP y MVVM

La interfaz de usuario a menudo contiene una gran cantidad de código desordenado principalmente debido a la lógica complicada que necesita manejar. Los patrones de presentación se diseñan principalmente con un objetivo en mente, reducir el código complejo en la capa de presentación y hacer que el código en la interfaz de usuario sea limpio y manejable. En esta publicación, presentaré una discusión sobre los patrones de diseño MVC, MVP y MVVM y destacaré cuándo uno debería ser el diseño preferido sobre el otro.

Controlador de vista de modelo

El marco Model View Controller (comúnmente conocido como MVC) le ayuda a crear aplicaciones que son más fáciles de probar y mantener. Consta de tres componentes principales, a saber:

  1. Modelo: esta es la capa que representa los datos de la aplicación
  2. Vista: representa la presentación o la capa de la interfaz de usuario.
  3. Controlador: esta capa generalmente contiene la lógica comercial de su aplicación

El objetivo principal del patrón de diseño MVC es la separación de preocupaciones para facilitar la capacidad de prueba. El patrón de diseño Model View Controller le permite aislar las preocupaciones y hace que el código de su aplicación sea más fácil de probar y mantener. En un diseño típico de MVC, la solicitud llega primero al controlador que vincula el modelo con la vista correspondiente. En el patrón de diseño MVC, la vista y el controlador utilizan el diseño de estrategia y la vista y el modelo se sincronizan mediante el diseño del observador. Por tanto, podemos decir que MVC es un patrón compuesto. El controlador y la vista están débilmente acoplados y un controlador puede ser utilizado por múltiples vistas. La vista se suscribe a los cambios en el modelo.

Presentador de vista de modelo

El patrón de diseño MVP (Model View Presenter) también consta de tres componentes: el modelo, la vista y el presentador. En el patrón de diseño MVP, el controlador (en MVC) es reemplazado por el presentador. A diferencia del patrón de diseño MVC, el presentador vuelve a referirse a la vista debido a que la burla de la vista es más fácil y las pruebas unitarias de aplicaciones que aprovechan el patrón de diseño MVP sobre el patrón de diseño MVC son mucho más fáciles. En el patrón de diseño MVP, el presentador manipula el modelo y también actualiza la vista. Hay dos variaciones de este diseño. Estos incluyen los siguientes.

  1. Vista pasiva: en esta estrategia, la vista no reconoce el modelo y el presentador actualiza la vista para reflejar los cambios en el modelo.
  2. Controlador supervisor: en esta estrategia, la vista interactúa con el modelo directamente para vincular los datos a los controles de datos sin la intervención del presentador. El presentador es responsable de actualizar el modelo. Manipula la vista solo si es necesario, si necesita que se ejecute una lógica de interfaz de usuario compleja.

Si bien estas dos variantes promueven la capacidad de prueba de la lógica de presentación, se prefiere la variante de vista pasiva sobre la otra variante (controlador de supervisión) en lo que respecta a la capacidad de prueba principalmente porque tiene toda la lógica de vista actualizada dentro del presentador.

Se prefiere el patrón de diseño MVP sobre MVC cuando su aplicación necesita brindar soporte para múltiples tecnologías de interfaz de usuario. También se prefiere si tiene una interfaz de usuario compleja con mucha interacción de usuario. Si desea tener una prueba unitaria automatizada en la interfaz de usuario de su aplicación, el patrón de diseño MVP es adecuado y preferido sobre el diseño MVC tradicional.

Modelo - Vista - ViewModel (MVVM)

Model - View - ViewModel (MVVM) es una variación del patrón de diseño del modelo de presentación de Martin Fowler. El MVVM es un refinamiento del popular diseño MVC y el ViewModel en MVVM se utiliza para facilitar la separación de presentaciones. En la MVVM la lógica se almacena en el presentador y la vista está completamente aislada del modelo. Si bien el presentador no conoce la vista, la vista conoce al presentador: el presentador en MVVM se usa para representar una vista abstracta de la interfaz de usuario. Una vista pasiva implica que la vista no tiene ningún conocimiento del modelo. En el patrón de diseño MVVM, la Vista está activa y contiene comportamientos, eventos e información de enlace de datos. Tenga en cuenta que la vista en MVVM no es responsable de administrar la información de estado; la vista está sincronizada con el modelo de vista.El modelo de vista en MVVM es responsable de la separación de la presentación y expone métodos y comandos para administrar el estado de una vista y manipular el modelo.

¿Cómo se comunican la vista y el modelo de vista en MVVM? Bueno, la vista y el modelo de vista en MVVM se comunican usando métodos, propiedades y eventos. El enlace de datos bidireccional o el enlace de datos bidireccional entre la vista y el modelo de vista asegura que los modelos y las propiedades en el modelo de vista estén sincronizados con la vista. El patrón de diseño MVVM se adapta bien a aplicaciones que necesitan soporte para enlace de datos bidireccional.