適用性 |
- 在需要用比較通用和復雜的對象指針代替簡單的指針的時候,使用P r o x y 模式。下面是一 些可以使用P r o x y 模式常見情況:
1) 遠程代理(Remote Proxy )為一個對象在不同的地址空間提供局部代表。 NEXTSTEP[Add94] 使用N X P r o x y 類實現了這一目的。Coplien[Cop92] 稱這種代理為“大使” (A m b a s s a d o r )。 2 )虛代理(Virtual Proxy )根據需要創建開銷很大的對象。在動機一節描述的I m a g e P r o x y 就是這樣一種代理的例子。 3) 保護代理(Protection Proxy )控制對原始對象的訪問。保護代理用于對象應該有不同 的訪問權限的時候。例如,在C h o i c e s 操作系統[ C I R M 9 3 ]中K e m e l P r o x i e s 為操作系統對象提供 了訪問保護。 4 )智能指引(Smart Reference )取代了簡單的指針,它在訪問對象時執行一些附加操作。 它的典型用途包括:
- 對指向實際對象的引用計數,這樣當該對象沒有引用時,可以自動釋放它(也稱為S m a r tP o i n t e r s[ E d e 9 2 ] )。
- 當第一次引用一個持久對象時,將它裝入內存。
- 在訪問一個實際對象前,檢查是否已經鎖定了它,以確保其他對象不能改變它。
|