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