Patrón Proxy

Lectura de ~3 minutos

Delega el control de acceso de un objeto a otro.

Aplicabilidad

Siempre y cuando se necesite una referencia a un objeto más sofitsticado que un puntoer. A continuación las situaciones más comunes:

  • Proxy remoto provee una representación para un objeto que se encuentra en otro espacio de nombres.

  • Proxy virtual permite crear objetos costosos bajo demanda.

  • Proxy protector controla el acceso al objeto original.

  • Referencia inteligente reemplaza un puntero a un objeto para realizar tareas adicionales cuando el objeto es accedido, los usos más comunes son:

    • Contar el número de referencias al objeto real, para poder liberar memoria de forma eficiente.

    • Cargar la información persistente a memoria cuando se referencia por primera vez.

    • Comprobar que el objeto real está bloqueado antes de acceder a él para que ningún otro objeto lo pueda modificar.

Estrucutra

Proxy Diagram

Se extrae la interfaz de la clase que se quiere poner detrás del proxy, de modo que tanto la clase original y el proxy implementan la misma interfaz. La clase proxy referencia una instancia del objeto original y controla los accesos a dicha instancia.

Consecuencias

Este patrón introduce un nivel de indirección a la hora de acceder a un objeto. Esta indirección tiene varios usus dependiendo del tipo de proxy:

  • Proxy remoto oculta el hecho de que el objeto reside en otro espacio de nombres.

  • Proxy virtual mejora el rendimiento creando el objeto bajo demanda.

  • Proxy protector y referencia inteligente permiten añadir nueva lógica cuando el objeto es accedido.

Aquí un pequeño ejemplo en Net core.

Nos vemos en las próximas líneas.

Escrito el 21/12/2018