• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 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ù)仇代理烏龜君
    涟水县| 普兰店市| 文安县| 开封市| 当阳市| 隆尧县| 太康县| 额敏县| 天镇县| 闽清县| 榆林市| 珠海市| 辽源市| 密山市| 庆云县| 广丰县| 越西县| 扎囊县| 清水县| 阳高县| 图木舒克市| 西充县| 颍上县| 尚义县| 保康县| 高雄市| 兴城市| 汉阴县| 察隅县| 新泰市| 宿州市| 潢川县| 台中县| 高台县| 桃园市| 博客| 宁都县| 沾化县| 板桥市| 册亨县| 沛县|