Proxy
Transkrypt
Proxy
„Java EE – produkcja oprogramowania” OBI – PROGRAMOWANIE OBIEKTOWE W JAVIE PROXY Warszawa, 2016Z Proxy Obiekty typu proxy są warstwą pośrednią pomiędzy obiektami korzystającymi z usług (klienckimi, źródłowymi) i obiektami świadczącymi usługi (serwerowymi, docelowymi). Obiekty typu proxy mogą być tworzone statyczne lub dynamiczne (z użyciem mechanizmu refleksji). 2 Przykład implementacji statycznego obiektu typu proxy. W pierwszym kroku skonstruujemy bezpośrednią interakcję obiektu klienta z obiektem serwera (bez obiektu proxy). W kolejnym, dodamy obiekt typu proxy pośredniczący w komunikacji pomiędzy obiektem klienta i obiektem serwera. Statyczne klasy proxy 1/4 // deklaracja interfejsu IGun public interface IGun { public void load(); public void unload(); public void shoot(); public String getModel(); } // klasa Gun implementująca interfejs IGun public class Gun implements IGun { private String model; public Gun(String model) { this.model = model; } public public public public void void void void shoot() { System.out.println(model + " cel-pal"); } load() { System.out.println(model + " załaduj"); } unload() { System.out.println(model + " rozładuj"); } getModel() { System.out.println(model); } 3 } Statyczne klasy proxy 2/4 // klasa GunTest public class GunTest { public static void main(String[] args) { IGun iG47 = new Gun("AK47"); iG47.load(); iG47.shoot(); iG47.unload(); } sd Czytelnik } load() Gun (IGun) shoot() unload() 4 GunTest Statyczne klasy proxy 3/4 // klasa Gunproxy (statycznego proxy) implementująca interfejs IGun public class GunProxy implements IGun { private IGun iG; public GunProxy(IGun iG) {this.iG = iG;} } cel"); pal"); załaduj"); rozładuj"); model"); 5 public void shoot() { System.out.println("GunProxy: iG.shoot(); System.out.println("GunProxy: } public void load() { System.out.println("GunProxy: iG.load(); } public void unload() { System.out.println("GunProxy: iG.unload(); } public void getModel() { System.out.println("GunProxy: iG.getModel(); } Statyczne klasy proxy 4/4 // klient, klasa GunTest, metoda main IGun iG16 = new Gun("M16"); IGun iGP = new GunProxy(iG16); iGP.load(); iGP.shoot(); iGP.unload(); sd Czytelnik load() Proxy load() shoot() shoot() unload() unload() Gun (IGun) 6 GunTest