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