Este material forma parte de la serie "Introducción al desarrollo empresarial". Artículos anteriores:
En este artículo conoceremos algo llamado MVC. Hablaremos sobre qué es MVC, tocaremos su historia, exploraremos las ideas y los conceptos básicos incorporados en MVC, veremos paso a paso cómo dividir una aplicación en módulos Modelo, Vista y Controlador, escribiremos un pequeña aplicación web usando Spring Boot y, usando Spring MVC como ejemplo, vea cómo se envían los datos desde el código Java a las páginas HTML. Para comprender este material, debe estar familiarizado con los patrones de diseño, especialmente el observador y la fachada. Y familiarícese con las solicitudes y respuestas HTTP, comprenda los conceptos básicos de HTML y sepa qué son las anotaciones de Java. Tome una taza de café y un refrigerio, y póngase cómodo. Vamos a empezar.
De todo esto, podemos sacar una conclusión lógica. Un sistema complejo necesita ser dividido en módulos. Describamos brevemente los pasos para lograr esta separación.
Y así es como llegamos a una aplicación que consta de tres módulos llamados modelo, vista y controlador. Resumamos:
- acerca de la creación de redes
- sobre arquitectura de software
- sobre HTTP/HTTPS
- sobre los conceptos básicos de Maven
- sobre servlets (escribir una aplicación web simple)
- sobre contenedores de servlets

Historia de MVC
Trygve Reenskaug formuló las ideas detrás de MVC mientras trabajaba en Xerox PARC a fines de la década de 1970. En aquellos días, trabajar con computadoras requería un grado y estudio constante de documentación voluminosa. La tarea resuelta por Reenskaug junto con un grupo de desarrolladores muy fuertes fue simplificar la interacción de un usuario común con la computadora. Era necesario crear herramientas que, por un lado, fueran extremadamente simples y comprensibles y, por otro lado, permitieran controlar computadoras y aplicaciones complejas. Reenskaug trabajó en un equipo que desarrolló una computadora portátil "para niños de todas las edades": el Dynabook, así como el lenguaje SmallTalk bajo la dirección de Alan Kay. Fue entonces cuando se establecieron los conceptos de una interfaz amigable. En muchos aspectos, el trabajo realizado por Reenskaug y su equipo influyó en la evolución de la esfera de TI. Aquí hay un hecho interesante que no se aplica directamente a MVC, pero ilustra la importancia de estos desarrollos. alan kaydicho, "Cuando llegué por primera vez a Apple, que fue en el '84, la Mac ya estaba disponible y Newsweek me contactó y me preguntó qué pensaba de la Mac. Dije: 'Bueno, la Mac es la primera computadora personal lo suficientemente buena como para ser criticado.' Entonces, después de anunciar el iPhone en 2007, me lo acercó y me lo entregó. Me dijo: 'Alan, ¿es esto lo suficientemente bueno como para ser criticado?' Y le dije: 'Steve, hazlo del tamaño de una tableta y gobernarás el mundo'". Después de 3 años, el 27 de enero de 2010, Apple presentó el iPad con una diagonal de 9,7 pulgadas. En otras palabras, Steve Jobs siguió casi exactamente el consejo de Alan Kay. El proyecto de Reenskaug duró 10 años. Pero la primera publicación sobre MVC salió a la luz después de otros 10 años. Martin Fowler, autor de varios libros y artículos sobre arquitectura de software, menciona que estudió MVC usando una versión funcional de Smalltalk. Debido a que no hubo información sobre MVC de la fuente original durante mucho tiempo, y por varias otras razones, apareció una gran cantidad de interpretaciones diferentes de este concepto. Como resultado, muchos consideran que MVC es un patrón de diseño. Con menos frecuencia, MVC se denomina patrón compuesto o una combinación de varios patrones que funcionan juntos para crear aplicaciones complejas. Pero, como se mencionó anteriormente, MVC es en realidad principalmente un conjunto de ideas/principios/enfoques arquitectónicos que se pueden implementar de varias maneras usando diferentes patrones... A continuación, consideraremos las ideas principales integradas en el concepto de MVC. y por varias otras razones, apareció una gran cantidad de interpretaciones diferentes de este concepto. Como resultado, muchos consideran que MVC es un patrón de diseño. Con menos frecuencia, MVC se denomina patrón compuesto o una combinación de varios patrones que funcionan juntos para crear aplicaciones complejas. Pero, como se mencionó anteriormente, MVC es en realidad principalmente un conjunto de ideas/principios/enfoques arquitectónicos que se pueden implementar de varias maneras usando diferentes patrones... A continuación, consideraremos las ideas principales integradas en el concepto de MVC. y por varias otras razones, apareció una gran cantidad de interpretaciones diferentes de este concepto. Como resultado, muchos consideran que MVC es un patrón de diseño. Con menos frecuencia, MVC se denomina patrón compuesto o una combinación de varios patrones que funcionan juntos para crear aplicaciones complejas. Pero, como se mencionó anteriormente, MVC es en realidad principalmente un conjunto de ideas/principios/enfoques arquitectónicos que se pueden implementar de varias maneras usando diferentes patrones... A continuación, consideraremos las ideas principales integradas en el concepto de MVC.MVC: Ideas y principios básicos
- VC es un conjunto de ideas y principios arquitectónicos para construir sistemas de información complejos con una interfaz de usuario.
- MVC es una abreviatura que significa: Modelo-Vista-Controlador

Paso 1. Separe la lógica comercial de la aplicación de la interfaz de usuario
La idea principal de MVC es que cualquier aplicación con una interfaz de usuario se puede dividir en 2 módulos: un módulo responsable de implementar la lógica de negocios y la interfaz de usuario. El primer módulo implementará la funcionalidad principal de la aplicación. Este módulo es el núcleo del sistema, donde se implementa el modelo de dominio de la aplicación. En el paradigma MVC, este módulo es la letra M, es decir, el modelo. El segundo módulo implementa toda la interfaz de usuario, incluida la lógica para mostrar datos al usuario y manejar la interacción del usuario con la aplicación. El objetivo principal de esta separación es garantizar que el núcleo del sistema (el "modelo" en la terminología MVC) se pueda desarrollar y probar de forma independiente. Después de hacer esta separación, la arquitectura de la aplicación queda así:
Paso 2 Use el patrón de observador para hacer que el modelo sea aún más independiente y para sincronizar las interfaces de usuario
Aquí tenemos 2 objetivos:- Consiga una independencia aún mayor para el modelo
- Sincronizar interfaces de usuario
Paso 3 Separe la interfaz en vista y controlador
Seguimos dividiendo la aplicación en módulos, pero ahora en un nivel inferior en la jerarquía. En este paso, la interfaz de usuario (que separamos en un módulo distinto en el paso 1) se divide en una vista y un controlador. Dibujar una línea estricta entre la vista y el controlador es difícil. Si decimos que la vista es lo que ve el usuario, y el controlador es el mecanismo que le permite al usuario interactuar con el sistema, podría señalar una contradicción. Los elementos de control, como los botones en una página web o un teclado virtual en la pantalla de un teléfono, son básicamente parte del controlador. Pero son tan visibles para el usuario como cualquier parte de la vista. De lo que realmente estamos hablando aquí es de separación funcional. La principal tarea de la interfaz de usuario es facilitar la interacción del usuario con el sistema.- salida y visualización conveniente de la información del sistema al usuario
- introducir datos de usuario y comandos (comunicarlos al sistema)

- De acuerdo con los principios del paradigma MVC, un sistema debe dividirse en módulos.
- El módulo más importante e independiente debe ser el modelo.
- El modelo es el núcleo del sistema. Debería ser posible desarrollarlo y probarlo independientemente de la interfaz de usuario.
- Para lograr esto, en el primer paso de la división, necesitamos dividir el sistema en un modelo y una interfaz de usuario.
- Luego, utilizando el patrón del observador, reforzamos la independencia del modelo y sincronizamos las interfaces de usuario.
- El tercer paso es dividir la interfaz de usuario en un controlador y una vista.
- Todo lo que se requiere para recibir datos de usuario en el sistema está en el controlador.
- Todo lo que se requiere para entregar información al usuario está en la vista.
Un poco sobre cómo la vista y el controlador interactúan con el modelo
Al ingresar información a través del controlador, el usuario cambia el modelo. O al menos, el usuario cambia los datos del modelo. Cuando el usuario recibe información a través de los elementos de la interfaz (a través de la vista), el usuario está recibiendo información sobre el modelo. ¿Como sucedió esto? ¿Por qué medios la vista y el controlador interactúan con el modelo? Después de todo, las clases de la vista no pueden llamar directamente a los métodos de las clases del modelo para leer/escribir datos. De lo contrario, no podríamos decir que el modelo es independiente. El modelo es un conjunto de clases estrechamente relacionadas a las que ni la vista ni el controlador deberían tener acceso. Para conectar el modelo a la vista y al controlador, necesitamos implementar el patrón de diseño de fachada. La fachada del modelo es la capa entre el modelo y la interfaz de usuario, a través del cual la vista recibe datos formateados convenientemente, y el controlador cambia los datos llamando a los métodos necesarios en la fachada. Al final, todo queda así:
GO TO FULL VERSION