Universidad de la
AMAZONIA
PATRÓN DE DISEÑO
PROXY
Cristiam Arley Díaz Silva
Jhon Edinson Cruz Moreno
Programa de ingeniería de sistemas
Universidad de la Amazonia
Proxy
Provee un representante para controlar el acceso a otro objeto.
Otros nombres:
Surrogate (Sustituto)
(The Gang of Four, 2003)
Ingeniería de sistemas – Cristian Diaz, Jhon Edinson
INTENCIÓN
“Proporcionar un sustituto o intermediario para otro objeto de modo que
pueda controlarse el acceso que se tiene hacia él”.
Ingeniería de sistemas – Cristian Diaz, Jhon Edinson
MOTIVACIÓN
• Proporciona soluciones concretas en la creación de objetos pesados.
• Proporciona soluciones técnicas para la utilización de las cargas de objetos
de gran tamaño.
• Controlar el acceso y otras características de un objeto original a través de
un sustituto o intermediario.
Ingeniería de sistemas – Cristian Diaz, Jhon Edinson
APLICABILIDAD
Se necesita una forma más versátil o sofisticada de referencia a un objeto que
un simple puntero. Hay varios tipos de proxy:
Proxy remoto: Es un representante local para un objeto de otro proceso,
posiblemente en otra máquina. También se le denomina embajador.
Proxy virtual: Crea objetos costosos bajo demanda.
Proxy de protección: Controla el acceso al objeto original cuando hay distintos
niveles de acceso.
Referencia inteligente: Es un sustituto de un simple puntero que lleva a cabo
operaciones adicionales cuando se accede a un objeto.
Ingeniería de sistemas – Cristian Diaz, Jhon Edinson
ESTRUCTURA
Ingeniería de sistemas – Cristian Diaz, Jhon Edinson
COMPORTAMIENTO
Ingeniería de sistemas – Cristian Diaz, Jhon Edinson
PARTICIPANTES
Cliente:
Interactúa con el Sujeto de manera independiente de si este es un sujeto real o
un sujeto proxy.
Sujeto:
• Define la interfaz común para el sujeto real y sujeto proxy.
Sujeto real:
• Define el objeto real al que el sujeto proxy representa.
Sujeto proxy :
• Representa a un objeto real y además mantiene una referencia para acceder
al sujeto real, controla el acceso y puede ser responsable de crearlo y
destruirlo.
• Tiene una interfaz idéntica a la del sujeto para que ambos sean
intercambiables.
Ingeniería de sistemas – Cristian Diaz, Jhon Edinson
COLABORACIÓN
• El proxy reenvía las peticiones de los clientes al sujeto real cuando es
conveniente, dependiendo del tipo de proxy.
Ingeniería de sistemas – Cristian Diaz, Jhon Edinson
CONSECUENCIAS
• El proxy remoto oculta espacios de direcciones diferentes
• El proxy virtual evita consumir recursos hasta que no es necesario
• El proxy de protección y los punteros inteligentes permiten realizar tareas
internas (recolección de basura, controlar accesos, etc.)
• Permite realizar una optimización cow.
.
Ingeniería de sistemas – Cristian Diaz, Jhon Edinson
IMPLEMENTACIÓN
Al momento de implementar el método proxy, se debe tener en cuenta lo siguiente:
• El “proxy” es el encargado de crear y destruir los “sujetos Reales” cuando haga
falta.
• Para poder representar al “sujeto Real”, el “proxy” debe tener una interfaz
idéntica a la de “sujeto”.
• Un proxy remoto debe responsabilizarse de empaquetar y enviar las peticiones y
sus argumentos al objeto real.
• Un proxy virtual puede almacenar información adicional relativa al objeto para
posponer el acceso al mismo.
• Tanto un proxy de protección como una referencia “inteligente” comprueban los
permisos de acceso del cliente antes de pasar la petición al objeto.
Ingeniería de sistemas – Cristian Diaz, Jhon Edinson
PROBLEMA
• Se requiere abrir un documento, para abrir se necesita verificar que el usuario
tenga permisos y luego, se debe verificar si el usuario se encuentra en la misma
pagina que la imagen para que no sea cargada innecesariamente en memoria.
Ingeniería de sistemas – Cristian Diaz, Jhon Edinson
PATRONES RELACIONADOS
• Adapter: Un adapter proporciona una interfaz diferente para el
objeto que adopta. Por el contrario, un proxy tiene la misma
interfaz que su objeto [1].
• Decorador: Si bien los decoradores pueden tener una
implementación parecida a los proxies, tienen un propósito
diferente. Un decorador añade una o mas responsabilidades a
un objeto, mientras que un proxy controla el acceso a un
objeto[1].
Ingeniería de sistemas – Cristian Diaz, Jhon Edinson
REFERENCIAS
[1] P. Proxy, “Patrones de Diseño,” vol. 9, 2008.
[2] “Creational Patterns.”
[3] “Patrones De Diseño - Libro Gamma.pdf.” .
Ingeniería de sistemas – Isabel Ramírez y Daniel Restrepo
Universidad de la
AMAZONIA
GRACIAS POR SU ATENCIÓN
TEST
Con el siguiente link podrás acceder al test acerca del patrón de diseño :
Proxy
https://kahoot.it/
Ingeniería de sistemas – Isabel Ramírez y Daniel Restrepo