¿Qué es el modelo-vista-controlador?
Model-view-controller (MVC) es un tipo de arquitectura de software y patrón de diseño que segmenta cada elemento de un programa en áreas de funcionalidad bien definidas. En la arquitectura modelo-vista-controlador, el modelo trata con toda la lógica interna del programa que manipula, guarda, recupera y de otra manera maneja y calcula datos. El aspecto de la vista es responsable de mostrar información del modelo para el usuario, y también proporciona una manera para que el usuario dé su opinión al programa. El controlador toma información de la vista, la evalúa o la procesa e interactúa con el modelo para cambiar los datos o el estado del programa, que finalmente se muestra al usuario a través de la vista. Aunque el diseño del modelo-visor-controlador requiere un programa para encapsular la funcionalidad, las tres secciones aún necesitan interactuar entre sí de alguna manera y generalmente dependen unas de otras en algún sentido, a diferencia de otros patrones de diseño más agresivos.
Muy a menudo, el patrón modelo-vista-controlador se ve en aplicaciones que administran una interfaz gráfica de usuario (GUI). Usando el patrón MVC, los diferentes elementos visuales de la GUI son manejados por la vista, el controlador maneja la grabación y el procesamiento de dónde y en qué hace clic un usuario, y el modelo realmente cambia la información o carga la información. Dependiendo del diseño exacto de una aplicación, cada componente del patrón MVC puede tener un mecanismo para interactuar con los otros componentes, como que el modelo pueda instruir directamente a la vista para que actualice la pantalla o la vista tenga una manera de indicarle al controlador que está actualizando la pantalla y no acepta nuevas entradas. A diferencia de algunos patrones de diseño que adoptan un estricto enfoque de caja negra, los programas de controlador de vista de modelo tienden a ser un poco más flexibles, aunque algunas implementaciones pueden hacer que un programa MVC sea difícil de cambiar o depurar de forma modular.
En ciertos casos, el patrón model-view-controller no tiene que contener solo uno de cada componente. Un ejemplo es una aplicación que tiene múltiples vistas, como múltiples monitores, o una pantalla que se puede ver en varios dispositivos cliente. Se pueden usar múltiples vistas y controladores en una aplicación que permite a muchos usuarios acceder a una base de datos, todos respondiendo a un solo modelo. Sin embargo, es más común diseñar sistemas que mantengan una relación uno a uno de los componentes del modelo-vista-controlador.
Aunque los componentes del controlador de vista de modelo dependen uno del otro, puede ser mucho más fácil modificar ciertas partes de un sistema que usan el patrón MVC que si no se usara ningún patrón, especialmente en el caso de objetos no orientados aplicaciones. Si una aplicación usa devoluciones de llamada u oyentes y observadores para implementar interacciones entre los componentes, entonces cada componente puede cambiarse sin afectar a los otros dos. Esto significa que se podría implementar una nueva GUI sin afectar el modelo o el controlador. Sin embargo, debe tenerse en cuenta que los cambios fundamentales en un sistema modelo-vista-controlador pueden requerir una pequeña cantidad de nueva codificación para cada componente individual.