Está en la página 1de 47

Modelo-Vista-Controlador (MVC)

Edgardo Bermdez Pedro Martnez Vctor Gonzlez

Modelo-Vista-Controlador

Este patrn fue descrito por primera vez por Trygve Reenskaug en 1979, y la implementacin original fue realizada en Smalltalk en los laboratorios Xerox. MVC se basa en la separacin de la aplicacin en tres capas principales: Modelo, Vista y Controlador. Se usa (l o alguna de sus variantes) en la gran mayora de las interfaces de usuario.

Modelo-Vista-Controlador
Modelo: es la representacin especfica del dominio de la informacin sobre la cual funciona la aplicacin.
El modelo es otra forma de llamar a la capa de dominio. La lgica de dominio aade significado a los datos; por ejemplo, calculando si hoy es el cumpleaos del usuario o los totales, impuestos o portes en un carrito de la compra.

Modelo-Vista-Controlador

Vista: Se presenta el modelo en un formato adecuado para interactuar, usualmente un elemento de interfaz de usuario.

Controlador: Este responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista.

Modelo-Vista-Controlador
En general

Modelo-Vista-Controlador

Muchas aplicaciones utilizan un mecanismo de almacenamiento persistente (como puede ser una base de datos) para almacenar los datos. MVC no menciona especficamente esta capa de acceso a datos porque supone que est encapsulada por el modelo.

El objetivo primordial del MVC es la reutilizacin del cdigo ya implementado.


Esta tarea se facilita mucho si a la hora de programar tenemos la precaucin de separar el cdigo en varias partes que sean susceptibles de ser reutilizadas sin modificaciones.

Modelo-Vista-Controlador
Ejemplos

Los datos de una hoja de clculo pueden mostrarse de en formato tabular, con un grfico de barras, con uno de sectores. Los datos son el modelo. Si cambia el modelo, las vistas deberan actualizarse en consonancia. El usuario manipula el modelo a travs de las vistas. (en realidad, a travs de los controladores)

Modelo-Vista-Controlador
Mas de una Vista de un Modelo de Datos

Modelo-Vista-Controlador

MVC es utilizado con mayor frecuencia en las aplicaciones web, donde la Vista es la pgina HTML, y el Controlador es el cdigo que rene la data dinmica y genera el contenido de la pgina.
El Modelo es representado por el contenido actual, que usualmente se encuentra almacenado en una base de datos o en archivos XML.

Modelo-Vista-Controlador

Modelo-Vista-Controlador
Fortalezas

Se presenta la misma informacin de distintas formas.

Las vistas y comportamiento de una aplicacin deben reflejar las manipulaciones de los datos de forma inmediata. Debera ser fcil cambiar la interfaz de usuario (incluso en tiempo de ejecucin). Permitir diferentes estndares de interfaz de usuario o portarla a otros entornos no debera afectar al cdigo de la aplicacin.

Modelo-Vista-Controlador

En UML

Se propone para el desarrollo del Modelo de Anlisis de las aplicaciones, tres tipos de clases fundamentales, con las cuales podemos expresar todas las funciones de cualquier software, con sus respectivas responsabilidades

Clase Interfaz <<Interface>>: Recepcionar peticiones al sistema. Mostrar respuestas del sistema. Clase Entidad <<Entity>>: Gestionar datos (informacin) necesaria para el sistema. Almacenar datos (informacin) persistentes del sistema. Provee la funcionalidad principal de la aplicacin

Clase Controlador <<Controller>>: Procesar Informacin del sistema. Gestionar visualizacin de respuesta del sistema. Obtiene los datos del modelo.

Modelo-Vista-Controlador
Variantes del Modelo. - Variante en la cual no existe ninguna comunicacin entre el
Modelo y la Vista y esta ltima recibe los datos a mostrar a travs del Controlador.

Variante inicial del Patrn MVC.

Modelo-Vista-Controlador

Variante en la cual se desarrolla una comunicacin entre el Modelo y la Vista, donde esta ltima al mostrar los datos los busca directamente en el Modelo, dada una indicacin del Controlador, disminuyendo el conjunto de responsabilidades de este ltimo.

Variante Intermedia del Patrn MVC.

Modelo-Vista-Controlador
Muchas interfaces grficas de usuario, como Swing o MFC, hacen innecesario el uso de un controlador.

Definen su propio flujo de control y manejan los eventos internamente. Integran, as, la vista y el controlador. A esta variante se la suele denominar Document-View

Modelo-Vista-Controlador
Un controlador (controlador.java, por ejemplo) puede gestionar el clic en un botn, de tal forma que recoge datos por medio del Modelo (model.cargar_texto(..)) y los manda a la Vista (el applet) para su actualizacin (vista.mostrar_texto( )):
/**************************************************************** Responde al click en botn "abrir" La respuesta al evento es hacer que se abra en la vista el archivo correspondiente a la referencia seleccionada en el combo box ****************************************************************/ void b_abrir_actionPerformed(ActionEvent e) { String texto_archivo = model.cargar_texto( indice_ref ); // Obtener texto de archivo /*** Si la carga de archivo es ok, lo muestro. Si no, aviso de error ****/ if (texto_archivo != null) { vista.mostrar_texto(texto_archivo); // Mostrar texto vista.mostrar_aviso("Carga de " + path + " completada."); } else vista.mostrar_aviso("Error en la carga de " + path); }

PROXY

Proxy

Propsito
Proporciona un sustituto de otro objeto con el fin de controlar su acceso.

Motivacin
Razn para controlar el acceso a un objeto: Diferir el coste de su creacin e inicializacin hasta que el objeto realmente se necesite.

Proxy

Ejemplo
Editor de documentos que permite objetos grficos, abrir un documento debera ser rpido realmente, no todos los objetos son visibles a la vez

Solucin
Crear los objetos bajo demanda

Proxy

Solucin

Usar un objeto que sustituya a la imagen real (PROXY). El proxy acta como si fuese la imagen y la instancia cuando es necesario.

Proxy

Solucin La imagen est guardada en archivos separados y el Proxy guarda el nombre del archivo como la referencia al objeto real. El Proxy tambin guarda el tamao.

Proxy

Proxy

El editor de documento accede a la imagen a travs de la interfaz definida por la clase abstracta Graphic ImageProxy es una clase para las imgenes que es creada por demanda, contiene el nombre del archivo como una referencia a la imagen en el disco El nombre del archivo es pasado como argumento al constructor de ImageProxy .

Proxy

ImageProxy tambin guarda el tamao de la imagen y una referencia a la instancia real. Esta referencia no ser valida hasta que el Proxy instancie la imagen real. La operacin Draw se asegura que la imagen esta instanciada antes de responder la solicitud. GetExtent reenva la solicitud a la imagen solo si ya fue instanciada, de lo contrario ImageProxy devuelve el tamao que tiene guardado.

Proxy

Aplicaciones
Donde exista la necesidad de referenciar un objeto de forma ms verstil y sofisticada que un puntero. Proxy remoto (Ambassador / Embajador)
Proporciona un representante local de un objeto en un espacio de memoria diferente.

Proxy virtual
Para crear objetos de gran tamao bajo demanda.

Proxy

Proxy de proteccin
Controla el acceso al objeto original. Es til si el objeto original tiene diferentes derechos de acceso.

Referencia elegante (smart pointers)


Realiza acciones adicionales cuando se acceden a los elementos referenciados

Proxy

Estructura

Proxy

Diagrama de Secuencia

Proxy

Participantes

Proxy Mantiene un referencia al objeto real Mantiene un mismo interfaz que el objeto real Mantiene el acceso al objeto real Codificacin de peticiones, Caching de informacin, comprobar permisos

Proxy

Participantes

Subject Define el interfaz comn a Proxy y RealSubject RealSubject Define el objeto real que representa el Proxy

Proxy

Consecuencias
El proxy introduce un nivel de indireccin cuando accede a un objeto. La indireccin tiene muchos usos dependiendo del tipo de proxy: Remoto: ocultar espacio de memoria. Virtual: optimizaciones, creando objetos bajo demanda Proteccin: tareas adicionales.

Proxy

Relacionados

Si ofrece un interfaz distinto (proxy de seguridad)

Adapter Decorator

Tiene una implementacin similar a

PROXY/BROKER

Proxy/Broker

Propsito
Estructurar sistemas distribuidos en los cuales surge la necesidad de una iteracin remota entre componentes.

Motivacin
Desacoplar la interaccin de los usuarios en los clientes y servidores.

Proxy/Broker

Ejemplo
En el desarrollo de un Mercado Web tenemos desarrollados dos agentes, el comprador y el vendedor. Pero estos estn desarrollados en plataformas diferentes que no permite que tengan comunicacin.

Proxy/Broker

Solucin
Cuando un cliente necesita comprar un producto, solicita a travs de un Proxy al agente Broker los vendedores que tiene registrado. El Broker se comunica por un Proxy con el servidor para llevar a cabo la peticin.

Proxy/Broker

Solucin
El agente Broker entrega la informacin necesaria a el proxy-cliente y al proxyservidor para que estos establezcan una comunicacin efectiva que permita realizar la operacin.

Proxy/Broker

Los broker permiten realizar conexiones entre clientes y servidores de diferentes plataformas.

Le entregan la informacin necesaria a los Proxy para que estos realicen las conexiones.

Proxy/Broker

Otro ejemplo
El broker sirve de intermediario entre el comprador y el vendedor.

Permitiendo que logren conectarse y realizar la transaccin.

Proxy/Broker

Los patrones Proxy/Broker se pueden implementar de diferentes maneras, esto depende de los requerimientos de los sistemas.

Una Forma de implementarlos es permitiendo que los Proxy cliente y servidor se comuniquen entre ellos cuando es posible.

Proxy/Broker

Proxy/Broker
Diagrama de Secuencia

Proxy/Broker

Otra manera muy usada es no permitir que los Proxy cliente y servidor se comuniquen.

Esta restriccin podra ser necesaria por polticas de seguridad de los servidores. Tambin por mantener un orden y control de todo lo que pasa por los Proxys.

Proxy/Broker

Proxy/Broker

Proxy/Broker

Consecuencias

Aislamiento: Entre la aplicacin y los servidores. Sencillez: permite que sea mas sencilla la construccin de
los sistemas.

Flexibilidad: Permite cambiar capas sin afectar las


aplicaciones relacionadas con esta.

Proxy/Broker

Ejemplos
Este patrn es muy usado por sistemas con estndar CORBA (Arquitectura comn de intermediarios en peticiones a objetos).
Microsofts OLE 2.x World Wide Web ATM-P

También podría gustarte