Ingeniería de Software: Modelo Vista Controlador

Tiempo de lectura: 4 minutos


Existen varios modelos de arquitectura Modelo-Vista-Controlador (MVC) que se han desarrollado a lo largo del tiempo para adaptarse a diferentes tipos de aplicaciones y contextos de desarrollo.

  1. MVC Clásico:
  • Modelo: Representa los datos y la lógica del negocio de la aplicación. Es responsable de gestionar el estado de la aplicación y realizar operaciones relacionadas con los datos.
  • Vista: Es responsable de la presentación de los datos al usuario. Muestra la interfaz de usuario y comunica las acciones del usuario al controlador.
  • Controlador: Actúa como intermediario entre el modelo y la vista. Gestiona las interacciones del usuario, actualiza el modelo según las acciones del usuario y actualiza la vista para reflejar los cambios en el modelo.

Ejemplo:

Modelo:

public class UserModel {
    private String username;
    private String password;
    
    // Getters y setters
}

Vista:

public class UserView {
    public void printUserDetails(String username, String password) {
        System.out.println("Username: " + username);
        System.out.println("Password: " + password);
    }
}

Controlador:

public class UserController {
    private UserModel model;
    private UserView view;
    
    public UserController(UserModel model, UserView view) {
        this.model = model;
        this.view = view;
    }
    
    public void updateView() {
        view.printUserDetails(model.getUsername(), model.getPassword());
    }
}
  1. MVC basado en Web:
  • Modelo: Similar al MVC clásico, representa los datos y la lógica del negocio de la aplicación web. Puede incluir la interacción con la base de datos y la lógica de negocio del lado del servidor.
  • Vista: En el contexto web, la vista representa la interfaz de usuario que se muestra al usuario en el navegador. Normalmente se crea utilizando tecnologías web como HTML, CSS y JavaScript.
  • Controlador: El controlador en el MVC web gestiona las solicitudes HTTP del cliente y decide cómo responder a esas solicitudes. Por lo general, se encarga de enrutar las solicitudes a la lógica de negocio correspondiente y renderizar la vista adecuada.

Ejemplo:

  • Modelo: Similar al ejemplo del MVC Clásico, pero puede incluir lógica adicional del lado del servidor y acceso a base de datos.
  • Vista: Una página HTML que muestra los detalles del usuario.
  • Controlador: Un controlador de servlet en Java que maneja las solicitudes HTTP y decide qué acción tomar en función de la solicitud.
  1. MVC de Doble Vista (MVC 2):
  • Modelo: Al igual que en los otros modelos MVC, representa los datos y la lógica del negocio. Puede incluir la lógica del lado del servidor y la interacción con la base de datos.
  • Vista: En el MVC de doble vista, hay dos vistas: una vista de presentación que muestra la interfaz de usuario y una vista de control que muestra los controles de usuario. La vista de control maneja las interacciones del usuario, mientras que la vista de presentación muestra los resultados de esas interacciones.
  • Controlador: El controlador en este modelo maneja las interacciones del usuario y coordina entre la vista de control y la vista de presentación. Es responsable de actualizar el modelo según las acciones del usuario y coordinar la actualización de ambas vistas.

Ejemplo:

Modelo: Similar al ejemplo del MVC Clásico, pero puede incluir más lógica para manejar múltiples vistas.

Vista de Presentación:

public class PresentationView {
    public void showUserDetails(String username, String password) {
        System.out.println("User Details:");
        System.out.println("Username: " + username);
        System.out.println("Password: " + password);
    }
}

Vista de Control:

public class ControlView {
    public void showControls() {
        System.out.println("Edit User");
        System.out.println("Delete User");
    }
}

Controlador:

public class DualViewController {
    private UserModel model;
    private PresentationView presentationView;
    private ControlView controlView;
    
    public DualViewController(UserModel model, PresentationView presentationView, ControlView controlView) {
        this.model = model;
        this.presentationView = presentationView;
        this.controlView = controlView;
    }
    
    public void updatePresentationView() {
        presentationView.showUserDetails(model.getUsername(), model.getPassword());
    }
    
    public void updateControlView() {
        controlView.showControls();
    }
}
  1. MVC en arquitecturas basadas en componentes o microservicios:
  • En arquitecturas basadas en componentes, el modelo, la vista y el controlador pueden estar distribuidos en diferentes componentes o servicios.
  • Por ejemplo, en una aplicación basada en microservicios, cada microservicio puede tener su propio modelo, vista y controlador, y la comunicación entre ellos se realiza a través de interfaces bien definidas.
  • Esto permite una mayor escalabilidad y modularidad, ya que cada componente puede ser desarrollado, probado y desplegado de forma independiente.

Ejemplo:

En una arquitectura basada en microservicios, cada microservicio podría tener su propia implementación de MVC. Por ejemplo, un microservicio de gestión de usuarios podría tener sus propios modelos, vistas y controladores para manejar las operaciones de usuarios. La comunicación entre estos componentes podría realizarse a través de una interfaz RESTful o mediante mensajes en una cola de mensajes, dependiendo de la arquitectura específica utilizada.

Deja un comentario