Proxy

Propósito

Según el libro "Patrones de Diseño" [29] el patrón Proxy "proporciona un representante o sustituto de otro objeto para controlar el acceso a este".

También conocido como

Surrogate (Sustituto)

Estructura

Participantes

  • Proxy:

    • mantiene una referencia que permite al proxy acceder a la variable original. El proxy puede referirse a un Sujeto en caso de que las interfaces de SujetoReal y Sujeto sean la misma.

    • proporciona una interfaz idéntica a la de Sujeto, de manera que un proxy pueda ser sustituido por el sujeto real.

    • controla el acceso al sujeto real, y puede ser responsable de su creación y borrado.

    • otras responsabilidades dependen del tipo de proxy:

      • los proxies remotos son responsables de codificar una petición y sus argumentos para enviar la petición codificada al sujeto real que se encuentra en un espacio de direcciones diferente.

      • los proxies virtuales pueden guardar información adicional sobre el sujeto real, por lo que pueden retardar el acceso al mismo.

      • los proxies de protección comprueban que el llamador tenga los permisos de acceso necesarios para realizar una petición.

  • Sujeto:

    • define una interfaz común para el SujetoReal y el Proxy, de modo que pueda usarse un Proxy en cualquier sitio en el que se espere un SujetoReal.

  • SujetoReal:

    • define la variable real representada.

Implementación

No se observan impedimentos y/o modificaciones de la estructura original del patrón para su implementación en Go.

Código de ejemplo

En este ejemplo queremos restringir los accesos a redes sociales en los navegadores de una escuela. Para esto realizaremos un proxy de protección.

Implementación:

Se puede probar la implementación del patrón de la siguiente forma:

Código de ejemplo | Ejecutar código

Atención: Esta publicación se encuentra abandonada. Puede acceder a la versión vigente en https://leanpub.com/designpatternsingo

Última actualización

¿Te fue útil?