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