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
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.