PRoxy,為其他對象提供一種代理以控制對這個對象的訪問。
abstract class Subject{ public abstract void Request();}class RealSubject extends Subject{ @override public void Request() { 真實請求的代碼實現;}}class Proxy extends Subject{ Subject realSubject; @override public void Request() { if (realSubject == null) realSubject = new RealSubject(); realSubject.Request(); }}main(){ Proxy proxy = new Proxy(); proxy.Request();}代理模式就是在訪問對象時引入一定程度的間接性,因為這種間接性,可以附加多種用途。
代理模式的應用場景:
1、遠程代理:
為一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在于不同地址空間的事實。
例:在應用程序中加入一個Web引用,引用一個WebService,此時會在項目中生成一個WebService的文件夾和一些文件,其實它們就是代理,這就使得客戶端程序調用代理就可以解決遠程訪問的問題。
2、虛擬代理:
根據需要創建開銷很大的對象。通過它來存放實例化需要很長時間的真實對象。
例:打開很大的HTML網頁時,里面的圖片是一張一張加載的。那些未打開的圖片框,就是通過虛擬代理來替代了真實的圖片,此時代理存儲了真實圖片的路徑和尺寸。
3、安全代理:
控制真實對象訪問時的權限。
4、智能指引:
當調用真實的對象時,代理處理另外一些事。
例:計算真實對象的引用次數;當第一次引用一個持久對象時,將其裝入內存;在訪問一個實際對象前,檢查是否已經鎖定它,以確保其他對象不能改變它。
新聞熱點
疑難解答