Patrones de diseño: Proxy

Actualizado: jul 16

Muchos al oir la palabra Proxy, pensareis en redes e Internet, pero también es un patrón de diseño. Es muy similar al concepto de proxy en la red.


¿Cuál es su cometido?

Agregar un intermediario antes de usar la clase final.


¿Y cómo se implementa?

Supongamos que tenemos nuestra clase Cuenta que tiene sus propiedades.

A su vez tenemos la interfaz ICuenta.

Y la implementación de esta interfaz, ICuentaImpl.


Una vez tenemos esto, creamos la clase CuentaProxy, que implementa la interfaz ICuenta, de esta forma desde el cliente usaremos el proxy en lugar de ICuentaImpl, que será llamada desde el proxy, esto nos puede ser útil para agregar funcionalidad, realizar comprobaciones previas sin tocar la implementación de la interfaz, porque puede que se use para muchos otros tipos de objetos, o poner un log, etc.


Bien y este texto en código vendría a ser algo así:

public class Cuenta { }

public interface ICuenta { }

public class ICuentaImpl implements ICuenta { }

/** CuentaProxy **/
public class CuentaProxy implements ICuenta { 
private ICuentaImpl cuentaImpl;

    @Override
    public void method1 () { 
        cuentaImpl.method1(); 
    }
}

public classApp {
Cuenta c = new Cuenta();
ICuenta proxy = new CuentaProxy(c);

proxy.method1();
}

Esto nos da el beneficio de poder cambiar la implementación en el proxy cuando ya no trabajemos con ella sin tocar casi nada de código.


Espero que te haya gustado, nos vemos en la próxima :)


62 vistas

©2020 por Juanma Perez.