MVC - Info Exposición - Lenguaje III
MVC - Info Exposición - Lenguaje III
MVC - Info Exposición - Lenguaje III
Un diagrama sencillo que muestra la relación entre el modelo, la vista y el controlador. Nota: las
líneas sólidas indican una asociación directa, y principalmente las punteadas una indirecta (por
ejemplo, patrón Observer).
Historia
El patrón MVC fue una de las primeras ideas en el campo de las interfaces gráficas de
usuario y uno de los primeros trabajos en describir e implementar aplicaciones
software en términos de sus diferentes funciones. [5]
MVC fue introducido por Trygve Reenskaug (web personal) en Smalltalk-76 durante su
visita a Xerox Parc[6][7] en los años 70, seguidamente, en los años 80, Jim Althoff y
otros implementaron una versión de MVC para la biblioteca de clases de Smalltalk-
80.[8] Solo más tarde, en 1988, MVC se expresó como un concepto general en un
artículo[9] sobre Smalltalk-80.
En esta primera definición de MVC el controlador se definía como «el módulo que
se ocupa de la entrada» (de forma similar a como la vista «se ocupa de la salida»).
Esta definición no tiene cabida en las aplicaciones modernas en las que esta
funcionalidad es asumida por una combinación de la 'vista' y
algún framework moderno para desarrollo. El 'controlador', en las aplicaciones
modernas de la década de 2000, es un módulo o una sección intermedia de
código, que hace de intermediario de la comunicación entre el 'modelo' y la 'vista',
y unifica la validación (utilizando llamadas directas o el «observer» para desacoplar
el 'modelo' de la 'vista' en el 'modelo' activo [10]).
Algunos aspectos del patrón MVC han evolucionado dando lugar a ciertas
variantes del concepto original, ya que «las partes del MVC clásico realmente no
tienen sentido para los clientes actuales»: [11]
HMVC (MVC Jerárquico)
MVA (Modelo-Vista-Adaptador)
MVP (Modelo-Vista-Presentador)
MVVM (Modelo-Vista Vista-Modelo)
... y otros que han adaptado MVC a diferentes contextos.
1. El usuario interactúa con la interfaz de usuario de alguna forma (por ejemplo, el usuario
pulsa un botón, enlace, etc.)
2. El controlador recibe (por parte de los objetos de la interfaz-vista) la notificación de la
acción solicitada por el usuario. El controlador gestiona el evento que llega, frecuentemente
a través de un gestor de eventos (handler) o callback.
3. El controlador accede al modelo, actualizándolo, posiblemente modificándolo de forma
adecuada a la acción solicitada por el usuario (por ejemplo, el controlador actualiza el carro
de la compra del usuario). Los controladores complejos están a menudo estructurados
usando un patrón de comando que encapsula las acciones y simplifica su extensión.
4. El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La
vista obtiene sus datos del modelo para generar la interfaz apropiada para el usuario donde
se reflejan los cambios en el modelo (por ejemplo, produce un listado del contenido del
carro de la compra). El modelo no debe tener conocimiento directo sobre la vista. Sin
embargo, se podría utilizar el patrón Observador para proveer cierta indirección entre el
modelo y la vista, permitiendo al modelo notificar a los interesados de cualquier cambio.
Un objeto vista puede registrarse con el modelo y esperar a los cambios, pero aun así el
modelo en sí mismo sigue sin saber nada de la vista. Este uso del patrón Observador no es
posible en las aplicaciones Web puesto que las clases de la vista están desconectadas del
modelo y del controlador. En general el controlador no pasa objetos de dominio (el modelo)
a la vista aunque puede dar la orden a la vista para que se actualice. Nota: En algunas
implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador
envíe los datos del modelo a la vista. Por ejemplo en el MVC usado por Apple en su
framework Cocoa. Suele citarse como Modelo-Interface-Control, una variación del MVC
más puro
5. La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo
nuevamente..
Fuente: https://es.m.wikipedia.org/wiki/Modelo
%E2%80%93vista%E2%80%93controlador
Imagen fuente:
https://www.freecodecamp.org/espanol/news/el-
modelo-de-arquitectura-view-controller-pattern/amp/
Conclusión
Fuente: https://blog.nubecolectiva.com/que-es-mvc-modelo-vista-controlador-y-otros-detalles/
amp/#Evolucion_del_Patron_MVC