Modelo - Vista - Controlador en Java
¿Qué es MVC?
El patrón Modelo-Vista-Controlador (MVC) es un patrón de diseño de software que divide una aplicación en tres componentes principales:
Modelo: Contiene los datos y la lógica de negocio. El modelo se encarga de acceder a la base de datos, procesar datos, aplicar reglas de negocio y notificar a las vistas sobre los cambios en los datos.
Vista: Presenta los datos del modelo al usuario. En una aplicación de escritorio, la vista sería la interfaz gráfica de usuario (GUI). La vista muestra la información y recibe la entrada del usuario, pero no realiza operaciones lógicas sobre los datos.
Controlador: Actúa como intermediario entre el modelo y la vista. Responde a las entradas del usuario (por ejemplo, clics de botón), manipula el modelo y actualiza la vista.
¿Para qué sirve?
El patrón Modelo-Vista-Controlador (MVC) sirve para varios propósitos clave en el desarrollo de software.
Separación de Responsabilidades
Facilita la Prueba
Flexibilidad y Reusabilidad
Desarrollo Paralelo
Desarrollo Paralelo
Mejora la Mantenibilidad
Soporte para Interfaces de Usuario Múltiples
¿Cómo se comunican entre sí?
El patrón Modelo-Vista-Controlador (MVC) se basa en la comunicación entre sus tres componentes principales: Modelo, Vista y Controlador. Vamos a desglosar cómo se comunican estos componentes para entenderlo mejor:
Modelo a Vista
Mecanismo: El Modelo notifica a las Vistas suscritas cuando hay un cambio en los datos.
Ejemplo: Imagina una aplicación de gestión de inventario. Cuando se añade un nuevo producto al inventario (Modelo), el Modelo notifica a la Vista de lista de productos para que actualice la visualización.
Vista a Controlador:
Mecanismo: La Vista detecta las acciones del usuario (como clics en botones, entradas de texto) y notifica al Controlador. Esto generalmente se hace mediante el manejo de eventos.
Ejemplo: En una aplicación de correo electrónico, cuando el usuario presiona el botón "Enviar" (Vista), esta acción se notifica al Controlador correspondiente, que luego procesa la solicitud.
Controlador a Modelo:
Mecanismo: El Controlador interactúa directamente con el Modelo, enviando comandos para modificar los datos, basados en la interacción del usuario.
Ejemplo: Siguiendo con la aplicación de correo electrónico, el Controlador tomará la acción de "Enviar" y actualizará el Modelo para añadir el nuevo correo electrónico al conjunto de datos enviados.
Controlador a Vista:
Mecanismo: Aunque el Controlador no actualiza directamente la Vista, puede enviar comandos para cambiar la presentación o el estado de la Vista.
Ejemplo: En una aplicación de juego, si el jugador pierde una vida, el Controlador puede instruir a la Vista para que muestre un mensaje de "Vida Perdida" o actualice la representación gráfica de las vidas restantes.
Veamos todo esto con un ejemplo completo. Imagina una aplicación de lista de tareas (TODO List) Tenemos los siguientes componentes: - Modelo: Contiene una lista de tareas - Vista: Muestra las tareas en una lista en la interfaz de usuario - Controlador: Gestiona la adición de nuevas tareas
Ahora vamos a simular la ejecución del programa:
Cuando el usuario escribe una nueva tarea y presiona "Añadir" (Vista), esta acción se comunica al Controlador.
El Controlador procesa esta acción y añade la nueva tarea al Modelo.
El Modelo, al ser actualizado, notifica a la Vista (o Vistas) de la lista de tareas que hay un cambio.
La Vista, al recibir la notificación, se actualiza mostrando la nueva tarea añadida.
Ejemplo
Vale, nos dejamos de lío y vamos a la práctica. En este ejemplo vamos a ver como implementar MVC usando Java Swing pero tiene muchas más utilidades. Esta aplicación básica permite a un usuario actualizar un mensaje y ver el mensaje actualizado en la interfaz de usuario.
Modelo: El Modelo almacena los datos. En este caso, simplemente guardará un mensaje.
Vista: La Vista muestra la representación visual de los datos. Aquí, creamos una simple interfaz de usuario con un campo de texto y un botón.
Controlador: El Controlador maneja la lógica que responde a las acciones del usuario y actualiza el Modelo.
Principal: Aquí es donde se conectan el Modelo, la Vista y el Controlador.
Last updated