代理模式proxy

外觀模式

爲另外一個對象提供一個替身或者站位符號以控制對這個對象的訪問


設計原則

           爲了交互對象之間的鬆耦合設計而努力。


模式意圖

        使用代理模式創建代表(representative)對象,讓代表對象控制某對象的訪問,被代理的對象可以是遠程的對象、創建開銷大大的對象或者需要安全控制的對象;需要控制對某對象訪問,就可以使用代理模式。


UML類圖



經典應用

(1)遠程代理(Remote Proxy) -可以隱藏一個對象存在於不同地址空間的事實。也使得客戶端可以訪問在遠程機器上的對象,遠程機器可能具有更好的計算性能與處理速度,可以快速響應並處理客戶端請求。

例如jdk實現的rmi
(2)虛擬代理(Virtual Proxy) – 允許內存開銷較大的對象在需要的時候創建。只有我們真正需要這個對象的時候才創建。
(3)寫入時複製代理(Copy-On-Write Proxy) – 用來控制對象的複製,方法是延遲對象的複製,直到客戶真的需要爲止。是虛擬代理的一個變體。
(4)保護代理(Protection (Access)Proxy) – 爲不同的客戶提供不同級別的目標對象訪問權限
(5)緩存代理(Cache Proxy) – 爲開銷大的運算結果提供暫時存儲,它允許多個客戶共享結果,以減少計算或網絡延遲。
(6)防火牆代理(Firewall Proxy) – 控制網絡資源的訪問,保護主題免於惡意客戶的侵害。
(7)同步代理(SynchronizationProxy) – 在多線程的情況下爲主題提供安全的訪問。
(8)智能引用代理(Smart ReferenceProxy) - 當一個對象被引用時,提供一些額外的操作,比如將對此對象調用的次數記錄下來等。
(9)複雜隱藏代理(Complexity HidingProxy) – 用來隱藏一個類的複雜集合的複雜度,並進行訪問控制。有時候也稱爲外觀代理(Facade Proxy),這不難理解。複雜隱藏代理和外觀模式是不一樣的,因爲代理控制訪問,而外觀模式是不一樣的,因爲代理控制訪問,而外觀模式只提供另一組接口。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章