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:

  1. Modelo a Vista

    1. Mecanismo: El Modelo notifica a las Vistas suscritas cuando hay un cambio en los datos.

    2. 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.

  2. Vista a Controlador:

    1. 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.

    2. 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.

  3. Controlador a Modelo:

    1. Mecanismo: El Controlador interactúa directamente con el Modelo, enviando comandos para modificar los datos, basados en la interacción del usuario.

    2. 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.

  4. Controlador a Vista:

    1. Mecanismo: Aunque el Controlador no actualiza directamente la Vista, puede enviar comandos para cambiar la presentación o el estado de la Vista.

    2. 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.

imagen-mvc

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