Professional Documents
Culture Documents
3.1Ventajas................................................................................................................................ 11
3.2 Desventajas ......................................................................................................................... 11
REFERENCIAS ............................................................................................................................ 12
INTRODUCCION
El presente documento aborda uno de los patrones estructurales aplicado para el diseño Software,
el Proxy el cual según Erich Gamma autor del libro Patrones de diseño, lo define de la siguiente
manera:
Una razón para controlar el acceso a un objeto y retrasar todo el coste total de su creación
e inicialización hasta que realmente necesitemos usarlo. Pensemos en un editor de
documentos que puede insertar objetos gráficos en un documento. Algunos de estos
objetos gráficos, como las imágenes raster, pueden ser costosos de crear. Sin embargo,
abrir un documento debería ser una operación que se efectuase rápidamente, por lo que
debemos evitar crear todos los objetos costos a la vez en cuanto se abre el documento.
Por otro lado, tampoco es necesario, ya que no todos esos objetos serán visibles en el
documento al mismo tiempo. (Gamma Erich, 2003, pág. 191).
1. EL PATRON PROXY
Este patrón consiste en interponer un intermediario (Proxy) entre un objeto y los demás que lo
utilizan. Se diferencia del patrón Adaptador en que el objeto "adaptado" solamente puede ser
manipulado a través del objeto Proxy.
Se suele utilizar para implementar comportamientos "vagos" (lazy). 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
proxy Imagen, con el mismo interfaz, pero que solamente cargan la imagen cuando se va a
visualizar.
Debemos insistir en dos aspectos que caracterizan el patrón Proxy:
El objeto Apoderado tiene el mismo interfaz que el objeto "Protegido". Para facilitar esto
se puede derivar el objeto Apoderado de la misma clase padre que el objeto "Protegido",
pero no es absolutamente necesario.
El objeto "Protegido" solamente puede ser manipulado por su correspondiente
Apoderado.
1.2 MOTIVACIÓN Retrasar el coste de crear e inicializar un objeto hasta que es realmente
necesario. Por ejemplo, no abrir las imágenes de un documento hasta que no sean
necesarias.
Figura 1: Ejemplo de Proxy
En la figura 1 el proxy de imagen crea la imagen real solo cuando el editor de documentos le
pide que se dibuje, al invocar la operación Dibujar. El proxy redirige las siguientes peticiones
directamente a la imagen. Por lo tanto, debe mantener una referencia a la imagen después de
crearla. Supongamos que las imágenes se almacenan en archivos separados. En este caso,
podemos usar el nombre del archivo como la referencia al objeto real. El proxy también
almacena su extensión, esto es, su ancho y alto. La extensión permite al proxy responder a las
preguntas sobre su tamaño que le haga el formateador sin crear realmente la imagen.
2.1 Aplicabilidad
El patrón proxy se usa cuando se necesita una referencia a un objeto más flexible o sofisticado
que un puntero. Algunas situaciones comunes de aplicación son:
- Contar el número de referencias al objeto real, de manera que este pueda liberarse
automáticamente cuando no haya ninguna referencia apuntándole.
- Cargar un objeto persistente en la memoria cuando es referenciado por primera vez.
- Comprobar que se bloquea el objeto real antes de acceder a él para garantizar que no
puede ser modificado por ningún otro objeto.
2.1 Estructura
2.2 Participantes
Proxy (ProxyImagen)
Mantiene una referencia que permite al proxy acceder al sujeto real. El Proxy puede
referirse a un Subject en caso de que las interfaces de RealSubject y Subject sean la
misma.
Proporciona una interfaz idéntica a la del Sujeto para que un proxy pueda ser
sustituido por el sujeto real.
Controla el acceso al sujeto real y puede ser responsable de su creación y borrado.
Sujeto(gráfico)
Define la interfaz común para RealSubject y el proxy, de modo que pueda usarse
un proxy en cualquier sitio en el que se espere un SujetoReal.
RealSubject (imagen)
Define el objeto real que representa el proxy.
2.3 Colaboraciones
El Proxy redirige peticiones al SujetoReal cuando sea necesario, dependiendo del tipo de proxy.
2.4 Consecuencias
El patrón de diseño proxy introduce cierto rango de desvió sobre el acceso de un objeto, los usos
de este desvió dependen del tipo de proxy.
Un proxy remoto puede ocultar el hecho de que un objeto reside en otro espacio de
direcciones.
Un proxy virtual puede realizar optimizaciones, como la creación de objetos bajo
demanda.
Los proxies de protección y las referencias inteligentes permiten realizar tareas de
mantenimiento adicionales al acceder a un objeto.
Optimización copy-on-write
3.1 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.
3.2 Desventajas
Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1993, July). Design patterns: Abstraction and
reuse of object-oriented design. In European Conference on Object-Oriented Programming (pp.
406-431). Springer, Berlin, Heidelberg.
http://www.uml.org.cn/c++/pdf/DesignPatterns.pdf
Ros, M. Z. (2015). Patrones en elearning. Elementos y referencias para la formación. Revista de
Educación a Distancia, (27).