1. PATRON DE DISEÑO
PROXY
INTEGRANTES:
JOSÉ ÁNGEL TORRES PIÑA
ADRIANA ZAMARRIPA GALLEGOS
MARÍA CRISTINA GARCÍA LÓPEZ
MARISOL CRUZ SALIVAR
CESAR MARTIN GONZÁLEZ DUEÑAS
2. INTRODUCCION
Clasificación: Estructural
Intención: Provee un sustituto de un objeto para
controlar su acceso.
También conocido como Surrogate (sustituto).
Motivo
Una razón para controlar el acceso de un objeto es
postergar el costo de su creación hasta el momento
en que lo necesitemos. Considere un editor de
texto, que ofrece la capacidad de embeber objetos
gráficos en el documento. Algunas gráficas necesitan
cargar imágenes pesadas, y por lo tanto es costoso
crearlas.
3. Concepto
Proxy es un patrón estructural que tiene como
propósito proporcionar un subrogado o
intermediario de un objeto para controlar su acceso.
Este patrón es ampliamente utilizado en frameworks
cómo Hibernate o Spring AOP, permitiendo capturar
las llamadas a objetos POJO y permitiendo insertar en
ellas capacidades de persistencia para el caso de
Hibernate, u otro tipo de aspectos como gestión de
seguridad o transacciones para Spring AOP.
4. A continuación mostramos el diagrama de clases del
patrón Proxy:
En este patrón se identifica una interfaz Subject, un
objeto RealSubject que es el objeto al que se accede a
través del Proxy. El objeto Proxy mantiene una
referencia al objeto RealSubject y controla el acceso a sus
métodos, introduciendo las capacidades adicionales que
fuesen necesarias. Tanto la clase RealSubject como la
clase Proxy implementan la interfaz Subject
5. Aplicabilidad
Proxy se utiliza siempre que se necesite utilizar una
referencia versátil a un objeto. A continuación se describen
algunas situaciones comunes en las que se debe aplicar el
patrón proxy:
• Proxy remoto. Se desea representar un objeto remoto
como local.
• Proxy virtual. Se desea crear objetos pesados por
demanda.
• Proxy protector. Se desea controlar el acceso a un objeto.
• Una referencia inteligente remplaza a un punto básico de
acceso para ejecutar cambios cuando un objeto es
accedido.
6. Caracteristicas
Proporcionan soluciones concretas en la creación de
objetos pesados
Proporcionan soluciones técnicas para la utilización
de las carga de objetos de gran tamaño.
Se utilizan en situaciones frecuentes.
Favorece la reutilización de código .
7. Ventajas
Mantiene una referencia que permite al proxy acceder al objeto real.
Proporciona una interfaz igual que la del sujeto real.
Controla el acceso al sujeto real, y puede ser responsable de crearlo y
borrarlo.
Otras responsabilidades, dependen del tipo de proxy:
• Proxy Remoto: codifican las peticiones, y se las mandan al sujeto.
• Proxy virtual: Puede guardar información adicional sobre el
sujeto, para
retardar el acceso al mismo.
• Proxy de protección: comprueba
Otra optimización: copy-on-write.
Copiar un objeto grande puede ser costoso.
Si la copia no se modifica, no hay necesidad de incurrir en dicho
gasto.
El sujeto mantiene una cuenta de referencias, sólo cuando se hace
objeto ej : 75
Una operación que modifica el objeto, se copia realmente (ej.: clase
String del ejemplo de operadores C++).
8. Desventajas
Introduce un nivel de induración adicional, que tiene
muchos posibles usos:
Un proxy remoto puede ocultar el hecho de que un
objeto reside en otro espacio de direcciones.
Un proxy virtual puede realizar
optimizaciones, como crear objetos bajo demanda.
Tanto los proxies de protección, como las referencias
inteligentes permiten realizar tareas de
mantenimiento adicionales cuando se accede a un
objeto.