Sablonul de proiectare Proxy
Descriere
Sablonul proxy ofera un mecanism de acces controlat la un obiect prin intermediul altui obiect.
Situatii in care sablonul proxy este util:
- obiectului real este costisitoare, si acest va fi creat doar in momentul in care o metoda a acestuia este accesata pentru prima data prin intermediul obiectului proxy;
- obiectul proxy implementeaza mecanisme de securitate pentru a verifica drepturile de acces la obiectul real;
- obiectul proxy ofera acces la un obiect real distribuit (aflat intr-o alta locatie) - a se vedea mecanismul RMI (https://docs.oracle.com/javase/tutorial/rmi/);
- obiectul prxy efectuiaza operatii suplimentare pe langa cea de apelare a operatiei din obiectul real;
Diagrama UML
Exemplu
package isp.dp.proxy; public class Client { public static void main(String[] args) { Proxy opsProxy = new Proxy(); opsProxy.action2(); opsProxy.action1(); } } interface Operations{ void action1(); void action2(); } class RealOperations implements Operations{ @Override public void action1() { System.out.println("Do action 1"); } @Override public void action2() { System.out.println("Do action 2"); } } class Proxy implements Operations{ private RealOperations real; Proxy(){ real = new RealOperations(); } @Override public void action1() { real.action1(); } @Override public void action2() { real.action2(); } }
Rezultatul rularii codului:
Do action 2 Do action 1