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

Tiene

una implementacin similar a

Decorator

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