• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      淺析C#設(shè)計(jì)模式之代理模式

      2012-05-14 16:55:27沈鵬
      卷宗 2012年10期
      關(guān)鍵詞:結(jié)構(gòu)型設(shè)計(jì)模式代理

      沈鵬

      摘要:代理模式是常用的結(jié)構(gòu)型設(shè)計(jì)模式之一,當(dāng)無法直接訪問某個(gè)對象或訪問某個(gè)對象存在困難時(shí)可以通過一個(gè)代理對象來間接訪問,為了保證客戶端使用的透明性,所訪問的真實(shí)對象與代理對象需要實(shí)現(xiàn)相同的接口。根據(jù)代理模式的使用目的不同,代理模式又可以分為多種類型,例如保護(hù)代理、遠(yuǎn)程代理、虛擬代理、緩沖代理等,它們應(yīng)用于不同的場合,滿足用戶的不同需求。

      關(guān)鍵詞:C#;設(shè)計(jì)模式;代理模式

      一、代理模式概述

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

      代理模式是常用的結(jié)構(gòu)型設(shè)計(jì)模式之一,當(dāng)無法直接訪問某個(gè)對象或訪問某個(gè)對象存在困難時(shí)可以通過一個(gè)代理對象來間接訪問,為了保證客戶端使用的透明性,所訪問的真實(shí)對象與代理對象需要實(shí)現(xiàn)相同的接口。代理(Proxy)模式給某一個(gè)代理模式是一種對象結(jié)構(gòu)型模式。在代理模式中引入了一個(gè)新的代理對象,代理對象在客戶端對象和目標(biāo)對象之間起到中介的作用,它去掉客戶不能看到的內(nèi)容和服務(wù)或者增添客戶需要的額外的新服務(wù)。

      二、代理模式的種類

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

      遠(yuǎn)程(Remote)代理:為一個(gè)位于不同的地址空間的對象提供一個(gè)局域代表對象。這個(gè)不同的地址空間可以是在本機(jī)器中,也可是在另一臺機(jī)器中。遠(yuǎn)程代理又叫做大使(Ambassador)。

      虛擬(Virtual)代理:根據(jù)需要創(chuàng)建一個(gè)資源消耗較大的對象,使得此對象只在需要時(shí)才會被真正創(chuàng)建。

      Copy-on-Write代理:虛擬代理的一種。把復(fù)制(克?。┩涎拥街挥性诳蛻舳诵枰獣r(shí),才真正采取行動。

      保護(hù)(Protect or Access)代理:控制對一個(gè)對象的訪問,如果需要,可以給不同的用戶提供不同級別的使用權(quán)限。

      Cache代理:為某一個(gè)目標(biāo)操作的結(jié)果提供臨時(shí)的存儲空間,以便多個(gè)客戶端可以共享這些結(jié)果。

      防火墻(Firewall)代理:保護(hù)目標(biāo),不讓惡意用戶接近。

      同步化(Synchronization)代理:使幾個(gè)用戶能夠同時(shí)使用一個(gè)對象而沒有沖突。

      智能引用(Smart Reference)代理:當(dāng)一個(gè)對象被引用時(shí),提供一些額外的操作,比如將對此對象調(diào)用的次數(shù)記錄下來等。

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

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

      Achilles是一個(gè)用來測試網(wǎng)站的安全性能的工具軟件。Achilles相當(dāng)于位于客戶端的的一個(gè)桌面代理服務(wù)器,在一個(gè)HTTP過程里起到一個(gè)中間人的作用,但是Achilles與通常的代理服務(wù)器又有不同。Achilles截獲雙向的通信數(shù)據(jù),使得Achilles軟件的用戶可以改變來自和發(fā)往網(wǎng)絡(luò)服務(wù)器的數(shù)據(jù),甚至可以攔截并修改SSL通訊。另外一個(gè)例子就是Windows的快捷方式??旖莘绞绞撬玫某绦虻囊粋€(gè)代理。

      四、代理模式結(jié)構(gòu)與實(shí)現(xiàn)

      代理模式的結(jié)構(gòu)比較簡單,其核心是代理類,為了讓客戶端能夠一致性地對待真實(shí)對象和代理對象,在代理模式中引入了抽象層。

      代理模式包含如下三個(gè)角色:

      Subject(抽象主題角色):它聲明了真實(shí)主題和代理主題的共同接口,這樣一來在任何使用真實(shí)主題的地方都可以使用代理主題,客戶端通常需要針對抽象主題角色進(jìn)行編程。

      Proxy(代理主題角色):它包含了對真實(shí)主題的引用,從而可以在任何時(shí)候操作真實(shí)主題對象;在代理主題角色中提供一個(gè)與真實(shí)主題角色相同的接口,以便在任何時(shí)候都可以替代真實(shí)主題;代理主題角色還可以控制對真實(shí)主題的使用,負(fù)責(zé)在需要的時(shí)候創(chuàng)建和刪除真實(shí)主題對象,并對真實(shí)主題對象的使用加以約束。通常,在代理主題角色中,客戶端在調(diào)用所引用的真實(shí)主題操作之前或之后還需要執(zhí)行其他操作,而不僅僅是單純調(diào)用真實(shí)主題對象中的操作。

      在實(shí)際開發(fā)過程中,代理類的實(shí)現(xiàn)比上述代碼要復(fù)雜很多,代理模式根據(jù)其目的和實(shí)現(xiàn)方式不同可分為很多種類。

      參考文獻(xiàn)

      [1] 林舒萍,羅鍵.設(shè)計(jì)模式的應(yīng)用研究[J]. 計(jì)算機(jī)工程與設(shè)計(jì). 2005(11)

      [2] 陳智.在VB.NET中使用設(shè)計(jì)模式[J]. 甘肅科技. 2006(10)

      [3] 夏浩波.單例模式的設(shè)計(jì)與應(yīng)用[J]. 電腦開發(fā)與應(yīng)用. 2011(01)

      [4]丁中文,王懷軍.在C#中使用設(shè)計(jì)模式科技創(chuàng)新導(dǎo)報(bào)[J]. 2007(12)

      猜你喜歡
      結(jié)構(gòu)型設(shè)計(jì)模式代理
      仿生設(shè)計(jì)模式的創(chuàng)新應(yīng)用探索
      玩具世界(2023年6期)2024-01-29 12:14:36
      “1+1”作業(yè)設(shè)計(jì)模式的實(shí)踐探索
      自愈合薄膜的研究進(jìn)展
      西部論叢(2020年8期)2020-08-31 22:44:28
      代理圣誕老人
      交通機(jī)電工程設(shè)計(jì)模式創(chuàng)新探討
      體育社團(tuán)結(jié)構(gòu)型社會資本的培育研究
      代理手金寶 生意特別好
      淺議科技論文結(jié)構(gòu)型英文摘要的句型特點(diǎn)和表達(dá)方式
      新時(shí)期計(jì)算機(jī)程序的設(shè)計(jì)模式
      復(fù)仇代理烏龜君
      鄂州市| 昭苏县| 东宁县| 临潭县| 澄城县| 万载县| 隆回县| 吕梁市| 遂川县| 新和县| 浠水县| 南乐县| 庆安县| 三亚市| 佛冈县| 东城区| 错那县| 惠来县| 洛浦县| 顺昌县| 石柱| 额济纳旗| 仲巴县| 滁州市| 墨竹工卡县| 台东县| 秦安县| 衡山县| 碌曲县| 攀枝花市| 龙海市| 衡阳县| 顺义区| 呼图壁县| 渝中区| 宜都市| 鞍山市| 旅游| 淅川县| 崇左市| 上栗县|