日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

代理(Proxy)模式

發(fā)布時(shí)間:2025/3/20 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 代理(Proxy)模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

代理(Proxy)模式

代理(Proxy)模式給某一個(gè)對(duì)象提供一個(gè)代理,并由代理對(duì)象控制對(duì)原對(duì)象的引用。

代理模式的英文叫做Proxy或Surrogate,中文都可譯成"代理"。所謂代理,就是一個(gè)人或者一個(gè)機(jī)構(gòu)代表另一個(gè)人或者另一個(gè)機(jī)構(gòu)采取行動(dòng)。在一些情況下,一個(gè)客戶不想或者不能夠直接引用一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用。


代理的種類

如果按照使用目的來劃分,代理有以下幾種:

  • 遠(yuǎn)程(Remote)代理:為一個(gè)位于不同的地址空間的對(duì)象提供一個(gè)局域代表對(duì)象。這個(gè)不同的地址空間可以是在本機(jī)器中,也可是在另一臺(tái)機(jī)器中。遠(yuǎn)程代理又叫做大使(Ambassador)。
  • 虛擬(Virtual)代理:根據(jù)需要?jiǎng)?chuàng)建一個(gè)資源消耗較大的對(duì)象,使得此對(duì)象只在需要時(shí)才會(huì)被真正創(chuàng)建。
  • Copy-on-Write代理:虛擬代理的一種。把復(fù)制(克隆)拖延到只有在客戶端需要時(shí),才真正采取行動(dòng)。
  • 保護(hù)(Protect or Access)代理:控制對(duì)一個(gè)對(duì)象的訪問,如果需要,可以給不同的用戶提供不同級(jí)別的使用權(quán)限。
  • Cache代理:為某一個(gè)目標(biāo)操作的結(jié)果提供臨時(shí)的存儲(chǔ)空間,以便多個(gè)客戶端可以共享這些結(jié)果。
  • 防火墻(Firewall)代理:保護(hù)目標(biāo),不讓惡意用戶接近。
  • 同步化(Synchronization)代理:使幾個(gè)用戶能夠同時(shí)使用一個(gè)對(duì)象而沒有沖突。
  • 智能引用(Smart Reference)代理:當(dāng)一個(gè)對(duì)象被引用時(shí),提供一些額外的操作,比如將對(duì)此對(duì)象調(diào)用的次數(shù)記錄下來等。

在所有種類的代理模式中,虛擬(Virtual)代理、遠(yuǎn)程(Remote)代理、智能引用代理(Smart Reference Proxy)和保護(hù)(Protect or Access)代理是最為常見的代理模式。


遠(yuǎn)程代理的例子

Achilles是一個(gè)用來測(cè)試網(wǎng)站的安全性能的工具軟件。Achilles相當(dāng)于位于客戶端的的一個(gè)桌面代理服務(wù)器,在一個(gè)HTTP過程里起到一個(gè)中間人的作用,但是Achilles與通常的代理服務(wù)器又有不同。Achilles截獲雙向的通信數(shù)據(jù),使得Achilles軟件的用戶可以改變來自和發(fā)往網(wǎng)絡(luò)服務(wù)器的數(shù)據(jù),甚至可以攔截并修改SSL通訊。(這點(diǎn)在《Java與模式》中解釋的不是很清楚,關(guān)于對(duì)非對(duì)稱密鑰加密攔截、破解方法,可以參考我的另外一篇文章《通過代理截取并修改非對(duì)稱密鑰加密信息》)。

另外一個(gè)例子就是Windows的快捷方式。快捷方式是它所引用的程序的一個(gè)代理。


代理模式的結(jié)構(gòu)

代理模式的類圖如下圖所示:

代理模式所涉及的角色有:

抽象主題角色(Subject):聲明了真實(shí)主題和代理主題的共同接口,這樣一來在任何使用真實(shí)主題的地方都可以使用代理主題。

代理主題(Proxy)角色:代理主題角色內(nèi)部含有對(duì)真是主題的引用,從而可以在任何時(shí)候操作真實(shí)主題對(duì)象;代理主題角色提供一個(gè)與真實(shí)主題角色相同的接口,以便可以在任何時(shí)候都可以替代真實(shí)主體;控制真實(shí)主題的應(yīng)用,負(fù)責(zé)在需要的時(shí)候創(chuàng)建真實(shí)主題對(duì)象(和刪除真實(shí)主題對(duì)象);代理角色通常在將客戶端調(diào)用傳遞給真實(shí)的主題之前或之后,都要執(zhí)行某個(gè)操作,而不是單純的將調(diào)用傳遞給真實(shí)主題對(duì)象。

真實(shí)主題角色(RealSubject)角色:定義了代理角色所代表的真實(shí)對(duì)象。

轉(zhuǎn)載于:https://www.cnblogs.com/wenly/archive/2008/05/31/1211045.html

總結(jié)

以上是生活随笔為你收集整理的代理(Proxy)模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。