- ¿Qué es una base de datos? - noviembre 7, 2020
- ¿Es la programación una profesión para ti? - septiembre 3, 2020
- Temporada 2020-2021 - julio 15, 2020
Introducción
La palabra Proxy no aparece en la RAE, pero aparece en cualquier vocabulario informático, probablemente es uno de los términos informáticos más utilizados y uno de los que más se utilizan en cualquiera de las ramas informáticas existentes. El concepto principal es el de representante de algo real, que es utilizado como punto de acceso al representado.
En el artículo voy a explicarte los conceptos básicos del patrón proxy junto a un ejemplo práctico que he desarrollado para ti, además, al final del artículo podrás descargarte la plantilla del patrón, ¡para que la guardes en tu biblioteca personal!
Descripción y aplicabilidad
El patrón Proxy es un patrón de comportamiento que permite el control de acceso a un objeto introduciendo un segundo objeto que se encarga de realizar dicho control.
El patrón puede aplicarse en diferentes escenarios, esto permite que existan diferentes tipo de proxy dependiendo del problema que solucionan:
- Proxy Remoto: Representante local de un objeto situado en otro espacio de direcciones.
- Proxy Virtual: Crear objetos costosos por encargo.
- Proxy de Protección: Controlar el acceso al objeto.
- Proxy Inteligente: Tiene dos usos diferentes.
- Uso en sistemas concurrentes controlando el acceso al objeto.
- Cargar un objeto persistente en memoria cuando es referenciado por primera vez.
Estructura y participantes
El diagrama del patrón Proxy es este:
El patrón está compuesto por tres participantes:
- Proxy: Proporciona una interfaz idéntica al sujeto y mantiene una referencia que permite acceder al objeto real, que permite controlar su acceso.
- SujetoReal: Define el objeto real.
- Sujeto: Define el interfaz común para el SujetoReal y el Proxy.
¿Qué aporta?
El patrón Proxy aporta una serie de beneficios a los sistemas que lo utilizan, el proxy nos permitirá:
- Ocultar objetos que residen en espacios de direcciones diferentes al entornor en el que se ejecuta el sistema.
- Llevar a cabo optimizaciones.
- Realizar tareas de mantenimiento adicionales cuando se acceda a un objeto.
A la hora de utilizar el patrón tienes que tener cuidado para que el código que escribes siga siendo legible, es muy común que pierdas algo de legibilidad si no prestas atención a como escribes el código.
Implementación
¡Ha llegado el momento de que implementes tu primer Proxy!
En el ejemplo que he preparado para ti he creado un proxy de protección de acceso al sujeto real. En este caso, el proxy conoce al sujeto real, aunque podría darse el caso en el que el proxy no lo conozca, aunque no es lo común.
Proyecto
El proyecto es un proyecto de aplicación Java.
El diagrama de clases del proyecto es el siguiente:
Como puedes ver, he creado un interfaz que es heredado por el proxy como por el sujeto real, a su vez, el sujeto real es un miembro de la clase proxy. De esta manera, los clientes utilizarán el proxy en lugar del sujeto real, y al heredar ambos del mismo interfaz tendrán las mismas operaciones y atributos, permitiendo que sea transparente para ellos el uso de un proxy en vez del uso de sujeto real directamente.
Interfaz Información
Interfaz que define las operaciones que tendrán el sujeto real y el sujeto proxy, es heredado por ambas clases. En este caso existe una única operación que sirve para mostrar información.
Clase Información Real
Clase real que realiza las operaciones. Hereda el interfaz Información e implementa el método para mostrar la información.
Clase Información Proxy
Clase proxy que es la que utilizarán los clientes para hacer las operaciones implementadas en clase real, hereda del interfaz Información. En el método de mostrar información se realizan comprobaciones para que únicamente administradores puedan acceder al método mostrar información del sujeto real.
Clase Main
La clase Main es el programa principal del ejemplo que he creado. El ejemplo consiste en invocar al método para mostrar información con el usuario Alfredo y con el usuario Administrador, como puedes ver, dependiendo del usuario indicado por parámetros te mostrará o no la información.
Salida
Al ejecutar la aplicación obtendrás la siguiente salida.
Resumen y conclusiones
El patrón proxy introduce un nivel de indirección a la hora de acceder a un objeto, lo que te permitirá, entre otras cosas, llevar a cabo optimizaciones a la hora de la creación de los objetos u ocultar el hecho de que un objeto resida en un espacio de direcciones diferente.
A simple vista el patrón proxy podría parecerte muy sencillo y con poca utilidad, pero tengo que contradecirte si estás pensando eso, es sencillo pero con mucha utilidad. Te animo a que hagas el ejemplo que he preparado para ti y pienses en posibles proyectos en los que has trabajado o estás trabajando donde podrías darle uso, ¡verás como son muchos en los que puedes aplicarlo!
Si tienes alguna duda ponte en contacto conmigo y te ayudaré con los problemas que encuentres o dudas que tengas.
¡Descárgate la plantilla del patrón!