Skip to content

MVC, MVP y MVVM NO son Arquitecturas

Vanskarner edited this page Jul 29, 2023 · 1 revision

Es común confundir a MVC, MVP y MVVM como arquitecturas de software en lugar de patrones de diseño, tanto en el desarrollo móvil como en el desarrollo web. Sin embargo, es importante destacar que estos patrones no constituyen una arquitectura completa por sí mismos, sino que representan el detalle dentro de un componente individual en la arquitectura de un software más amplio.

El siguiente diagrama es una representación simplificada de los patrones más comúnmente utilizados:

MVC-MVP-MVVM

Razones de la confusión

Estas son posiblemente las principales razones por las cuales MVC, MVP y MVVM son denominados y considerados erróneamente como arquitecturas:

Terminología ambigua

La terminología utilizada en el desarrollo de software puede ser confusa y ambigua. A veces, los términos "patrón de diseño" y "arquitectura" se utilizan indistintamente, lo que puede llevar a una interpretación errónea para algunos lectores. Por ejemplo, en los blogs de algunos de los expertos en el campo de desarrollo de software, podemos encontrar lo siguiente:

MVP es una arquitectura que apareció por primera vez en IBM y de forma más visible en Taligent durante la década de 1990.

- Martin Fowler, GUI Architectures, 2006

Es en esta capa, por ejemplo, la que contendrá íntegramente la arquitectura MVC de una GUI.

- Robert C. Martin (Uncle Bob), The Clean Architecture, 2012

Si nos enfocamos únicamente en los fragmentos "MVP is an architecture" y "the MVC architecture" de ambas citas, se podría concluir de manera anticipada que los autores se refieren a MVP y MVC como una arquitectura, después de todo. No obstante, es fundamental considerar la idea completa, ya que tanto Martin Fowler como Uncle Bob hacen referencia a la "arquitectura de una GUI" (Graphical User Interface), que constituye un enfoque estructurado para organizar y presentar información en relación con la GUI, representando tan solo una parte del sistema de software.

Similitudes en su base

MVC, MVP y MVVM comparten ciertas características con las bases de la arquitectura, como la separación de responsabilidades y la organización de componentes, representando una guía para estructurar el código en aplicaciones. Estas similitudes pueden llevar a creer erróneamente que estos patrones constituyen una arquitectura completa por sí solos.

MVC, MVP y MVVM son patrones

En general, podemos considerar a MVC, MVP y MVVM como patrones de diseño utilizados para estructurar y organizar la lógica de presentación y la interacción con los datos en una aplicación. Estos patrones están particularmente relacionados con la capa de presentación, por lo que también son llamados patrones de presentación. Por ejemplo, en el libro de Martin Fowler titulado Patterns of Enterprise Application Architecture (2002), hay un capítulo llamado "Web Presentation Patterns" donde se aborda el patrón MVC.

A continuación, veamos qué nos dicen los propios creadores sobre sus aportes:

MVC MVP MVVM

Creé el patrón Modelo-Vista-Controlador como una solución obvia al problema general de dar a los usuarios el control sobre su información vista desde múltiples perspectivas.

- Trygve M. H. Reenskaug, MVC: Model-View-Controller, 1979

Por estas razones, creemos que el modelo de programación MVP es un patrón de diseño fundamental para el desarrollo de aplicaciones.

- Mike Potel, MVP: Model-View-Presenter The Taligent Programming Model for C++ and Java, 1996

Una vez comprendido el patrón Modelo/Vista/VistaModelo, cualquier problema de interfaz de usuario se puede plantear rápidamente en sus términos.

- John Gossman, Introduction to Model/View/ViewModel pattern for building WPF apps, 2005
Clone this wiki locally