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.
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.
Al acceder a objetos sensibles, por ejemplo, debería ser posible comprobar que los clientes tienen los derechos de acceso necesarios.
Definir un Proxy
objeto separado que
Subject
) yEsto permite trabajar a través de un Proxy
objeto 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 Subject
interfaz. 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.
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 ( ). Proxy
Subject
Subject
realSubject
RealSubject
realSubject.operation()
El diagrama de secuencia muestra las interacciones en tiempo de ejecución: el Client
objeto funciona a través de un Proxy
objeto que controla el acceso a un RealSubject
objeto. En este ejemplo, el Proxy
reenvía la solicitud al RealSubject
, que la ejecuta.
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.
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.
Se podría utilizar un proxy de protección para controlar el acceso a un recurso en función de los derechos de acceso.
{{cite book}}
: CS1 maint: varios nombres: lista de autores ( enlace )