代理模式(Proxy):對其它對象提供一種代理,以控制對這個對象的訪問!
package caosc.javaModel.Proxy;
public abstract class Subject {
public abstract void Request();
}
package caosc.javaModel.Proxy;
public class RealSubject extends Subject {
@Override
public void Request() {
System.out.println("真實的請求!");
}
}
package caosc.javaModel.Proxy;
public class Proxy extends Subject {
RealSubject rsb;
@Override
public void Request() {
if(null==rsb){
rsb = new RealSubject();
}
rsb.Request();
}
}
package caosc.javaModel.Proxy;
public class TestProxy {
public static void main(String[] args) {
Proxy p = new Proxy();
p.Request();
}
}
代理模式應用:
1、遠程代理,爲一個對象在在不同的地址空間提交局部代表,這樣隱藏一個對象在不同地址地址控件的真實;
2、虛擬代理,創建開銷很大的對象,用它來存放需要實例化很長時間的對象,比如網頁圖片加載優化;
3、安全代理,用來控制對象訪問時的權限;
4、智能指引,當調用真實對象時候,代理處理另外一些事情,比如當第一次引用一個持久化對象時候將對象放入內存;或者在訪問一個對象的時候,檢查是否鎖定,都是通過在訪問一個對象的時候,增加一些內務事物;