概念代理這個詞對我們來說非常熟悉,比如上網(wǎng)經(jīng)常使用的代理服務(wù)器,還有銷售代理商等。就是客戶與目標之間的橋梁。設(shè)計模式中的代理模式(Proxy)是這樣定義的:為其他對象提供一種代理以控制對這個對象的訪問。若要為其他對象提供代理服務(wù),那么首先本身也要具有與被代理對象同樣的方法,那么這樣在訪問時才能真正起到(透明)代理的作用。所以代理類一般同被代理類是繼承于同一個類的兄弟類,區(qū)別就是他是為別人服務(wù)的。這樣說來,表面看代理很風(fēng)光,啥都得通過他,好像沒他不行似的,其實他就是個跑堂的!
組成部分1.抽象主題:基類,聲明了代理對象和真實對象的共同點;2.真實主題:真正需要被調(diào)用的對象;3.代理對象:代理真實對象的對象。
分類1.遠程代理:也就是為一個對象在不同的地址空間提供局部代表,這樣可以隱藏一個對象存在于不同地址空間的事實。這個不同的地址空間可以是在本機器上,也可以在另一臺機器中。2.虛擬代理:是根據(jù)需要創(chuàng)建開銷很大的對象,通過它來存放實例化需要很長時間的真實對象,使其只有在真正需要時才被創(chuàng)建。3.安全代理:也叫保護代理,用來控制真實對象訪問時的權(quán)限,如果有必要的話,可以給不同調(diào)用者提供不同的權(quán)限。4.智能指引:是指當(dāng)調(diào)用真實對象時,代理處理另外一些事,比如記錄對此對象的調(diào)用次數(shù)等。5.寫時拷貝:虛擬代理的一種,把復(fù)制推遲到只有客戶的需要時才進行。6.緩存代理:為某一個目標的操作結(jié)果提供臨時存儲空間,以便其他客戶的可以共享訪問,有點緩存的味道。7.防火墻代理:保護對象,不讓用戶訪問,安全代理的特例。8.同步代理:可以讓幾個用戶同時訪問同一個對象而不產(chǎn)生沖突。常用的是前四種代理方式。
UML類圖 實例代碼1)Proxy.h
Copyright @ 老狼 Powered by: .Text and ASP.NET Theme by: .NET Monster