天天看點

代理模式(Proxy)

  代理模式,為其他對象提供一種代理以控制對這個對象的通路。在某些情況下,一個對象不适合或者不能直接引用另一個對象,而代理對象可以在用戶端和目标對象之間起到中介的作用。

優點:

代理對象可以在用戶端和目标對象之間起到中介的作用,這樣起到了保護目标對象的作用。

應用場景:

遠端代理。為一個不同的位址空間的對象提供一個本地的代理對象。這個不同的位址空間可以是在同一台主機中,也可在不同的主機中。

虛拟代理。根據需要建立開銷很大的對象。通過它來存放執行個體化需要很長時間的真實對象。這樣可以達到性能的最優化,比如打開一個很大的HTML網頁時。

安全代理。用來控制真實對象通路時的權限。一般用于對象應該有不同的通路權限的時候。

智能指針。是指當調用真實的對象時,代理處理另外一些事。如計算真實對象的引用計數,這樣當該對象沒有引用時,可以自動釋放它;或當第一次引用一個持久對象時,将它裝入記憶體;或在通路一個實際對象前,檢查是否已經鎖定它,以確定其他對象不能改變它。他們都是通過代理通路一個對象時附加一些内務處理。

代理模式(Proxy)

Subject類,定義了RealSubject和Proxy的共用接口,這樣就在任何使用RealSubject的地方都可以使用Proxy。

代碼:

//Proxy.h

運作結果:

代理模式(Proxy)