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