什麼是代理?在我們的日常生活中的例子非常多。
比如上網有的時候使用代理伺服器,通過代理上網,這就是代理的一個非常常見的例子。
從這裡邊可以看到3個對象:真實網路對象,代理對象還有用戶端對象。
真實對象和代理對象還都有通路網絡的方法是以抽象出網絡對象。
對應的類圖關系如下:
如圖:
真實的網絡被隐藏起來,我們通路的是代理的網絡對象,同時我們可以在通路代理對象的同時動态的加上比如驗證使用者,清除使用者資訊的方法。
生成的檔案如下:
client.h
client.cpp
Network.h
Network.cpp
ProxyNetwork.h
ProxyNetwork.cpp
RealNetwork.h
RealNetwork.cpp
運作client.cpp中的main,我們得到如下:
代理模式:為其它對象提供一種代理以控制對這個對象的通路。
代理模式的幾種應用場景:
1,遠端代理,為一個對象在不同的空間提供局部代表,隐藏真實對象,webservice的調用就是一個最好的例子。
2,虛拟代理,根據需要建立開銷很大的對象,通過它來存放執行個體化需要很長時間的真實對象。浏覽網頁時,我們通路緩存中的對象就是其中一個例子。
3,安全代理,控制真實對象的通路權限,不讓外部看到真實的網絡情況。上邊的例子就是一個比較好的執行個體。