代理模式 Proxy Design Pattern

Proxy 代理模式

  • Provide a surrogate or placeholder for another object to control access to it.
  • Use an extra level of indirection to support distributed,controlled, or intelligent access.
  • Add a wrapper and delegation to protect the real component from undue complexity.

1. 提供另外一個對象作爲代理來控制對原對象的訪問。

2. 使用更高一級的間接訪問來支持分佈式,有控制的或者智能的接入。

3. 使用包裝或者委託來保護真正的對象不要引入過度的複雜性。


Proxy scheme


代理對象也實現原對象的接口,並且包含一個原對象引用,客戶端只能通過訪問代理對象來執行原對象的方法,並且可以對原方法前後添加可選的功能。



以上是最基本的代理模式,在應用時有如下擴展:

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

(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) – 用來隱藏一個類的複雜集合的複雜度,並進行訪問控制。有時候也稱爲外觀代理(Façade Proxy),這不難理解。複雜隱藏代理和外觀模式是不一樣的,因爲代理控制訪問,而外觀模式是不一樣的,因爲代理控制訪問,而外觀模式只提供另一組接口。


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