PRoxy,為其他對象提供一種代理以控制對這個(gè)對象的訪問。

abstract class Subject{ public abstract void Request();}class RealSubject extends Subject{ @override public void Request() { 真實(shí)請求的代碼實(shí)現(xiàn);}}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();}代理模式就是在訪問對象時(shí)引入一定程度的間接性,因?yàn)檫@種間接性,可以附加多種用途。
代理模式的應(yīng)用場景:
1、遠(yuǎn)程代理:
為一個(gè)對象在不同的地址空間提供局部代表。這樣可以隱藏一個(gè)對象存在于不同地址空間的事實(shí)。
例:在應(yīng)用程序中加入一個(gè)Web引用,引用一個(gè)WebService,此時(shí)會(huì)在項(xiàng)目中生成一個(gè)WebService的文件夾和一些文件,其實(shí)它們就是代理,這就使得客戶端程序調(diào)用代理就可以解決遠(yuǎn)程訪問的問題。
2、虛擬代理:
根據(jù)需要?jiǎng)?chuàng)建開銷很大的對象。通過它來存放實(shí)例化需要很長時(shí)間的真實(shí)對象。
例:打開很大的HTML網(wǎng)頁時(shí),里面的圖片是一張一張加載的。那些未打開的圖片框,就是通過虛擬代理來替代了真實(shí)的圖片,此時(shí)代理存儲(chǔ)了真實(shí)圖片的路徑和尺寸。
3、安全代理:
控制真實(shí)對象訪問時(shí)的權(quán)限。
4、智能指引:
當(dāng)調(diào)用真實(shí)的對象時(shí),代理處理另外一些事。
例:計(jì)算真實(shí)對象的引用次數(shù);當(dāng)?shù)谝淮我靡粋€(gè)持久對象時(shí),將其裝入內(nèi)存;在訪問一個(gè)實(shí)際對象前,檢查是否已經(jīng)鎖定它,以確保其他對象不能改變它。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注