国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺析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è)對(duì)象或訪問某個(gè)對(duì)象存在困難時(shí)可以通過一個(gè)代理對(duì)象來間接訪問,為了保證客戶端使用的透明性,所訪問的真實(shí)對(duì)象與代理對(duì)象需要實(shí)現(xiàn)相同的接口。根據(jù)代理模式的使用目的不同,代理模式又可以分為多種類型,例如保護(hù)代理、遠(yuǎn)程代理、虛擬代理、緩沖代理等,它們應(yīng)用于不同的場(chǎng)合,滿足用戶的不同需求。

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

一、代理模式概述

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

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

二、代理模式的種類

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

遠(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ù)制(克?。┩涎拥街挥性诳蛻舳诵枰獣r(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通訊。另外一個(gè)例子就是Windows的快捷方式??旖莘绞绞撬玫某绦虻囊粋€(gè)代理。

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

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

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

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

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

在實(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)型社會(huì)資本的培育研究
代理手金寶 生意特別好
淺議科技論文結(jié)構(gòu)型英文摘要的句型特點(diǎn)和表達(dá)方式
新時(shí)期計(jì)算機(jī)程序的設(shè)計(jì)模式
復(fù)仇代理烏龜君
荣昌县| 万荣县| 罗田县| 正宁县| 阜城县| 东乌珠穆沁旗| 玉环县| 会宁县| 本溪| 洛宁县| 乾安县| 曲松县| 肇源县| 临高县| 阜平县| 武冈市| 崇信县| 灵台县| 额敏县| 广河县| 大渡口区| 青铜峡市| 大埔区| 屯留县| 正定县| 乌苏市| 永胜县| 遂宁市| 汨罗市| 墨江| 万源市| 博白县| 宁武县| 中山市| 台南市| 淮安市| 保山市| 民县| 合江县| 邓州市| 龙泉市|