Proxy(代理)-對(duì)象結(jié)構(gòu)型模式 - 設(shè)計(jì)模式
1. 意圖
為其它對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問.
2. 別名
Surrogate
4. 適用性
遠(yuǎn)程代理(Remote Proxy)為一個(gè)對(duì)象在不同的地址空間提供局部代表.
虛代理(Virtual Proxy) 根據(jù)需要?jiǎng)?chuàng)建開銷很大的對(duì)象.
保護(hù)代理(Protection proxy) 控制對(duì)原是對(duì)象的訪問.
智能指針(Smart Reference)
遠(yuǎn)程(Remote)代理: 為一個(gè)位于不同地址空間的對(duì)象提供一個(gè)局域代表對(duì)象.
虛擬(Virtual)代理: 根據(jù)需要?jiǎng)?chuàng)建一個(gè)資源消耗較大的對(duì)象. 使此對(duì)象只有在真正需要時(shí)才真正被創(chuàng)建.
Copy_on_Write代理: 即寫時(shí)復(fù)制技術(shù). 它是虛擬代理的一種. 把復(fù)制拖延到真正需要的時(shí)候才進(jìn)行.
保護(hù)(Protect or Access)代理: 控制對(duì)一個(gè)對(duì)象的訪問. 需要的時(shí)候可以給不同的用戶提供不同的權(quán)限.
Cache代理: 為某一個(gè)目標(biāo)操作的結(jié)果提供臨時(shí)的存儲(chǔ)空間.
防火墻(Firewall)代理: 保護(hù)目標(biāo). 不讓惡意用戶接近.
同步化(Synchronization)代理: 例如在多線程的時(shí)候.讓多個(gè)線程訪問對(duì)象. 智能引用(Smart Reference)代理: 見智能指針.
--《Java與模式》
5. 結(jié)構(gòu)
6. 參與者
Proxy
----保存一個(gè)被代理的實(shí)體的引用.通過該引用控制實(shí)際對(duì)象.
----提供一個(gè)與Subject相同的接口.這樣代理就可以代替實(shí)體.
----控制對(duì)實(shí)體的存取.并可能負(fù)責(zé)創(chuàng)建和刪除它.
----其它功能.
Subject
----定義了RealSubject和Proxy的共用接口. 這樣就可以在使用RealSubject的地方
使用Proxy.
RealSubject
----定義Proxy所代表的實(shí)體.