3. El patrón Proxy
Consiste en interponer un intermediario (Proxy) entre un
objeto y los demás que lo utilizan.
Se suele utilizar para implementar comportamientos "vagos“.
Por ejemplo, si tenemos muchos objetos imagen en un
documento, se tardaría mucho tiempo en abrir el documento
al cargar las imágenes de disco. Para evitarlo podemos
sustituir los objetos imagen por objetos proxyImagen, con la
misma interfaz, pero que solamente cargan la imagen cuando
se va a visualizar. Es decir se plantea para ello la carga de
las imágenes bajo demanda. Pero, ¿cómo cargar las
imágenes bajo demanda sin complicar el resto del
editor? La respuesta es utilizar un objeto proxy. Dicho objeto
se comporta como una imagen normal y es el responsable de
cargar la imagen bajo demanda
4. Diagrama de clases del patrón Proxy:
• La 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. Características
Debemos insistir en dos aspectos que
caracterizan el patrón Proxy:
– El objeto Proxy tiene el mismo interfaz que el
objeto “Real". Para facilitar esto se puede
derivar el objeto Proxy de la misma clase padre
que el objeto “Real", pero no es absolutamente
necesario.
– El objeto “Real" solamente puede ser
manipulado por su correspondiente Proxy.
6. Ejemplo de aplicación
• Un ejemplo típico de aplicación del patrón
proxy es el de un editor de documentos. El
editor podrá incluir imágenes y dibujos
complejos, y se plantea el problema de
recuperar todos estos costosos objetos
cada vez que se abre el documento. La
aplicación del patrón proxy soluciona el
problema definiendo un "representante",
que ocupe su lugar, hasta que sea
necesario cargarlos.