¿Qué es el patrón MVC?

Publicado: por Angel Alvizu
¿Qué es el patrón MVC?

Modelo - Vista - Controlador, es un patrón de arquitectura del software en el que los distintos elementos que lo componen son organizados y divididos de tal manera que funcionen con una mínima dependencia entre si, facilitando el mantenimiento y mejorando la legibilidad del código.

Antes de la adopción del patrón MVC, muchas piezas de software eran estructuradas de una forma simple pero poco organizada, grandes archivos que contenían acceso a base datos, presentación de la interfaz de usuario y lógica para manejo de acciones o eventos, todo mezclado dentro de un único archivo para nada mantenible. Esto permitía realizar un proyecto de forma rápida, ya que la organización era algo simple, pero a largo plazo, el mantenimiento del mismo se vería gravemente afectado, ya que dichos archivos empezarían a crecer cada vez más.

Aquí es donde entra el patrón MVC y la Separación de Conceptos (Separation of Concerns, por sus siglas en ingles: SoC), los cuales nos indican que se debe atacar cada problema de forma individual, separando cada aspecto de nuestro software en 3 principales conceptos:

Modelo: Es la lógica de negocio de nuestro software, comúnmente hace referencia, pero no está limitado a, la base de datos, entidades, repositorios y consultas. Todo lo referente a manipulación de datos en el nivel más bajo, se encuentra en el modelo, lo que llamamos el CRUD de nuestro sistema (Create, Read, Update, Delete o en español: Crear, Leer, Actualizar, Eliminar), las cuatro operaciones esenciales que podemos realizar con nuestros datos, además de la validación de los mismos.

Vista: Es la interfaz de usuario, todo lo referente a la presentación de nuestra aplicación estará de forma organizada en múltiples vistas, en las cuales no habrá ningún tipo de lógica compleja. Las vistas deben estar limitadas a mostrar información únicamente, con lógica sencilla como: impresión de variables, condicionales y ciclos para repetir un elemento; toda esta información debe ser procesada y validada previamente por el controlador y el modelo, de tal forma que se reduzca al mínimo la programación en la vista. En ellas también se asignan formatos especiales a los datos mostrados, como formato de monedas, fechas, entre otros; ya que estos datos vienen del modelo guardados en un formato estándar, queda de parte de la vista mostrarlos de forma amigable al usuario.

Controlador: Es el intermediario entre la vista y el modelo, el controlador se encarga de atender y procesar las acciones que realice el usuario a través de la interfaz, enviando dicha información al modelo (de ser necesario) y regresando una respuesta a la vista. Los controladores deben mantenerse también con un mínimo de lógica y ser lo más modulares posible. En el controlador también existe una capa de validación, la cual debe digerir los datos y organizarlos de tal forma que al momento de ser enviados al modelo, se realice la validación final para ejecutar la operación deseada por el usuario.

Flujo de aplicación con patrón MVC
El flujo de una aplicación utilizando MVC

¿Por qué se habla de independencia entre elementos con MVC?

La idea del patrón MVC es tratar al software como piezas de un Lego. Al ser sustituida una sección de nuestra aplicación por otra, esta debería funcionar de la misma forma con pocas o ninguna modificación adicional. Por ejemplo, si deseamos cambiar la forma de mostrar los datos al usuario, basta con cambiar el formato de nuestra Vista sin afectar el Modelo o el Controlador.

Esto es especialmente útil cuando se trabaja con equipos de múltiples desarrolladores y diseñadores, ya que el encargado del diseño, creará la interfaz sin necesidad de saber cómo los datos son mostrados o procesados, las responsabilidades se separan y existe una menor dependencia entre ambas partes.

El patrón MVC es universal, pudiendo ser aplicado a plataformas web, de escritorio o móviles. Por lo que la curva de aprendizaje de un proyecto, que utilice dicha filosofía, será mucho más baja, debido a que independientemente de la plataforma; el concepto y organización sigue siendo similar.

Compartir

Comentarios