Patrón Proxy

PUBLICADO: 2026-08-17
AUTOR: MANUEL PRIETO
Patrones de Diseño

💡 Ver Caso Práctico: Ejemplo Práctico del Patrón Proxy

Proxy es un patrón de diseño estructural que proporciona un sustituto o marcador de posición de otro objeto, controlando el acceso al objeto original.

Propósito y Caso de Uso

Utiliza Proxy cuando necesites añadir un comportamiento (caché, control de acceso, carga diferenciada, logging) alrededor de un objeto sin modificarlo, y sin que el cliente note la diferencia porque el proxy implementa la misma interfaz. A diferencia del Patrón Adapter (traduce interfaz) y del Patrón Decorator (añade responsabilidades), Proxy mantiene la misma interfaz y controla el acceso.

Estructura del Patrón

  1. Interfaz Común: Declarada tanto por el objeto real como por el proxy.
  2. Sujeto Real (RealSubject): El objeto original con la lógica de negocio.
  3. Proxy: Implementa la misma interfaz, mantiene una referencia al sujeto real y controla el acceso a él (lazy-loading, caché, permisos).
Cargando diagrama...

Flujo de Funcionamiento

  1. Invocación: El cliente llama a un método sobre el proxy, creyendo que es el objeto real.
  2. Control: El proxy ejecuta lógica adicional (verificar caché, permisos, inicializar el objeto real si aún no existe).
  3. Delegación: El proxy delega la llamada al sujeto real cuando corresponde y devuelve el resultado.

Ejemplos de Implementación Reales

Cuándo NO usarlo

Si no necesitas controlar el acceso (caché, permisos, lazy-loading) y solo quieres añadir comportamiento visible al cliente, revisa primero Decorator (YAGNIGlosarioYAGNI (You Aren't Gonna Need It)Principio de Extreme Programming (XP) que establece que un programador no debe añadir funcionalidad hasta que sea estrictamente necesario. Su objetivo es evitar la sobre-ingeniería (over-engineering), previniendo código para funcionalidades hipotéticas.Ver término completo →).