Proxy es un patrón de diseño estructural que proporciona un objeto que actúa como sustituto de un objeto de servicio real utilizado por un cliente. Un proxy recibe solicitudes del cliente, realiza parte del trabajo (control de acceso, almacenamiento en caché, etc.) y después pasa la solicitud a un objeto de servicio.
El objeto proxy tiene la misma interfaz que un servicio, lo que lo hace intercambiable con un objeto real cuando se pasa a un cliente.
Ejemplos de uso: Aunque el patrón Proxy no es un invitado habitual en la mayoría de aplicaciones Ruby, resulta de mucha utilidad en algunos casos especiales. Es insustituible cuando queremos añadir algunos comportamientos adicionales a un objeto de una clase existente sin cambiar el código cliente.
Identificación: Los proxies delegan todo el trabajo real a otro objeto. Cada método proxy debe, al final, referirse a un objeto de servicio, a no ser que el proxy sea una subclase de un servicio.
Ejemplo conceptual
Este ejemplo ilustra la estructura del patrón de diseño Proxy. Se centra en responder las siguientes preguntas:
¿De qué clases se compone?
¿Qué papeles juegan esas clases?
¿De qué forma se relacionan los elementos del patrón?