Patrón proxy

Patrón de diseño de software

En programación informática , el patrón proxy es un patrón de diseño de software . Un proxy , en su forma más general, es una clase que funciona como interfaz con algo más. El proxy podría interactuar con cualquier cosa: una conexión de red, un objeto grande en la memoria, un archivo o algún otro recurso que sea costoso o imposible de duplicar. En resumen, un proxy es un contenedor o un objeto agente que el cliente llama para acceder al objeto de servicio real detrás de escena. El uso del proxy puede ser simplemente reenviar al objeto real o puede proporcionar lógica adicional. En el proxy, se puede proporcionar una funcionalidad adicional, por ejemplo, almacenamiento en caché cuando las operaciones en el objeto real consumen muchos recursos o verificar las condiciones previas antes de invocar las operaciones en el objeto real. Para el cliente, el uso de un objeto proxy es similar al uso del objeto real, porque ambos implementan la misma interfaz.

Descripción general

El patrón de diseño Proxy [1] es uno de los veintitrés patrones de diseño GoF conocidos que describen cómo resolver problemas de diseño recurrentes para diseñar software orientado a objetos flexible y reutilizable, es decir, objetos que son más fáciles de implementar, cambiar, probar y reutilizar.

¿Qué problemas puede resolver el patrón de diseño Proxy?[2]

  • El acceso a un objeto debe ser controlado.
  • Se debe proporcionar una funcionalidad adicional al acceder a un objeto.

Al acceder a objetos sensibles, por ejemplo, debería ser posible comprobar que los clientes tienen los derechos de acceso necesarios.

¿Qué solución describe el patrón de diseño Proxy?

Definir un Proxyobjeto separado que

  • se puede utilizar como sustituto de otro objeto ( Subject) y
  • Implementa funcionalidad adicional para controlar el acceso a este tema.

Esto permite trabajar a través de un Proxyobjeto para realizar funciones adicionales al acceder a un tema. Por ejemplo, para verificar los derechos de acceso de los clientes que acceden a un objeto confidencial.

Para actuar como sustituto de un sujeto, un proxy debe implementar la Subjectinterfaz. Los clientes no pueden saber si trabajan con un sujeto o con su proxy.

Vea también el diagrama de clases y secuencias UML a continuación.

Estructura

Diagrama de clases y secuencias UML

Un ejemplo de diagrama de clase y secuencia UML para el patrón de diseño Proxy. [3]

En el diagrama de clases UML anterior , la clase implementa la interfaz para que pueda actuar como sustituto de los objetos. Mantiene una referencia ( ) al objeto sustituido ( ) para poder reenviarle solicitudes ( ). ProxySubjectSubjectrealSubjectRealSubjectrealSubject.operation()

El diagrama de secuencia muestra las interacciones en tiempo de ejecución: el Clientobjeto funciona a través de un Proxyobjeto que controla el acceso a un RealSubjectobjeto. En este ejemplo, el Proxyreenvía la solicitud al RealSubject, que la ejecuta.

Diagrama de clases

Proxy en UML
Proxy en LePUS3 (leyenda)

Posibles escenarios de uso

Proxy remoto

En la comunicación de objetos distribuidos , un objeto local representa un objeto remoto (que pertenece a un espacio de direcciones diferente). El objeto local es un proxy del objeto remoto, y la invocación de un método en el objeto local da como resultado la invocación de un método remoto en el objeto remoto. Un ejemplo sería la implementación de un cajero automático , donde el cajero automático podría contener objetos proxy para la información bancaria que existe en el servidor remoto.

Proxy virtual

En lugar de un objeto complejo o pesado, en algunos casos puede resultar ventajoso utilizar una representación esquemática. Cuando una imagen subyacente es de gran tamaño, se puede representar mediante un objeto proxy virtual, cargando el objeto real a demanda.

Proxy de protección

Se podría utilizar un proxy de protección para controlar el acceso a un recurso en función de los derechos de acceso.

Véase también

Referencias

  1. ^ Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (1994). Patrones de diseño: elementos de software reutilizable orientado a objetos . Addison Wesley. pp. 207ff. ISBN 0-201-63361-2.{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace )
  2. ^ "El patrón de diseño Proxy: problema, solución y aplicabilidad". w3sDesign.com . Consultado el 12 de agosto de 2017 .
  3. ^ "El patrón de diseño Proxy: Estructura y colaboración". w3sDesign.com . Consultado el 12 de agosto de 2017 .
  • Geary, David (22 de febrero de 2002). "Tome el control con el patrón de diseño Proxy". JavaWorld . Consultado el 20 de julio de 2020 .
  • Proyecto de código abierto PerfectJPattern, que proporciona una implementación en componentes del patrón Proxy en Java
  • Comparación de patrones de adaptador, proxy y fachada en Wayback Machine (archivado el 11 de marzo de 2012)
  • Patrón de diseño de proxy
  • Ejemplo de implementación de patrón proxy en C++ en Wayback Machine (archivado el 19 de octubre de 2014)
  • Descripción del patrón proxy del Repositorio de patrones de Portland
Obtenido de "https://es.wikipedia.org/w/index.php?title=Patrón_de_proxy&oldid=1226849167"