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