Proxy (patrón de diseño)

Un proxy, en su forma más general, es una clase que funciona como una interfaz para otra cosa.

En el proxy, se puede proporcionar una funcionalidad adicional, por ejemplo, el almacenamiento en caché cuando las operaciones en el objeto real requieren muchos recursos, o la comprobación de las condiciones previas antes de que se invoquen las operaciones en el objeto real.

[1]​ Para explicar la motivación del uso de este patrón veamos un escenario donde su aplicación sería la solución más adecuada al problema planteado.

Interesa por tanto 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 son visibles).

Dependiendo de la función que se desea realizar con dicha referencia podemos distinguir diferentes tipos de proxies: La clase Proxy : mantiene una referencia al objeto real (en el siguiente ejemplo se le denomina _sujetoReal) y proporciona una interfaz idéntica al sujeto (la clase Sujeto).

Patrón Proxy