C#設(shè)計(jì)模式中代理模式怎么用-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)C#設(shè)計(jì)模式中代理模式怎么用,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元于田做網(wǎng)站,已為上家服務(wù),為于田各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

一、引言

在軟件開發(fā)過程中,有些對(duì)象有時(shí)候會(huì)由于網(wǎng)絡(luò)或其他的障礙,以至于不能夠或者不能直接訪問到這些對(duì)象,如果直接訪問對(duì)象給系統(tǒng)帶來不必要的復(fù)雜性,這時(shí)候可以在客戶端和目標(biāo)對(duì)象之間增加一層中間層,讓代理對(duì)象代替目標(biāo)對(duì)象,然后客戶端只需要訪問代理對(duì)象,由代理對(duì)象去幫我們?nèi)フ?qǐng)求目標(biāo)對(duì)象并返回結(jié)果給客戶端,這樣的一個(gè)解決思路就是今天要介紹的代理模式。

二、代理模式的詳細(xì)介紹

代理模式按照使用目的可以分為以下幾種:

  • 遠(yuǎn)程(Remote)代理:為一個(gè)位于不同的地址空間的對(duì)象提供一個(gè)局域代表對(duì)象。這個(gè)不同的地址空間可以是本電腦中,也可以在另一臺(tái)電腦中。最典型的例子就是——客戶端調(diào)用Web服務(wù)或WCF服務(wù)。

  • 虛擬(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)代理:控制一個(gè)對(duì)象的訪問,可以給不同的用戶提供不同級(jí)別的使用權(quán)限。

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

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

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

在哦上面所有種類的代理模式中,虛擬代理、遠(yuǎn)程代理、智能引用代理和保護(hù)代理較為常見的代理模式。下面讓我們具體看看代理模式的具體定義。

2.1 定義

代理模式——就是給某一個(gè)對(duì)象提供一個(gè)代理,并由代理對(duì)象控制對(duì)原對(duì)象的引用。在一些情況下,一個(gè)客戶不想或者不能直接引用一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用。例如電腦桌面的快捷方式就是一個(gè)代理對(duì)象,快捷方式是它所引用的程序的一個(gè)代理。

2.2 代理模式實(shí)現(xiàn)

看完代理模式的描述之后,下面以一個(gè)生活中的例子來解釋下代理模式,在現(xiàn)實(shí)生活中,如果有同事出國或者朋友出國的情況下,我們經(jīng)常會(huì)拖這位朋友幫忙帶一些電子產(chǎn)品或化妝品等東西,這個(gè)場(chǎng)景中,出國的朋友就是一個(gè)代理,他(她)是他(她)朋友的一個(gè)代理,由于他朋友不能去國外買東西,他卻可以,所以朋友們都托他幫忙帶一些東西的。下面就以這個(gè)場(chǎng)景來實(shí)現(xiàn)下代理模式,具體代碼如下:

// 客戶端調(diào)用
    class Client
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建一個(gè)代理對(duì)象并發(fā)出請(qǐng)求
            Person proxy = new Friend();
            proxy.BuyProduct();
            Console.Read();
        }
    }
    // 抽象主題角色
    public abstract class Person
    {
        public abstract void BuyProduct();
    }
    //真實(shí)主題角色
    public class RealBuyPerson : Person
    {
        public override void BuyProduct()
        {
            Console.WriteLine("幫我買一個(gè)IPhone和一臺(tái)蘋果電腦");
        }
    }
    // 代理角色
    public class Friend:Person
    {
        // 引用真實(shí)主題實(shí)例
        RealBuyPerson realSubject;
        public override void BuyProduct()
        {
            Console.WriteLine("通過代理類訪問真實(shí)實(shí)體對(duì)象的方法");
            if (realSubject == null)
            {
                realSubject = new RealBuyPerson();
            }
            this.PreBuyProduct();
            // 調(diào)用真實(shí)主題方法
            realSubject.BuyProduct();
            this.PostBuyProduct();
        }
        // 代理角色執(zhí)行的一些操作
        public void PreBuyProduct()
        {
            // 可能不知一個(gè)朋友叫這位朋友帶東西,首先這位出國的朋友要對(duì)每一位朋友要帶的東西列一個(gè)清單等
            Console.WriteLine("我怕弄糊涂了,需要列一張清單,張三:要帶相機(jī),李四:要帶Iphone...........");
        }
                         
        // 買完東西之后,代理角色需要針對(duì)每位朋友需要的對(duì)買來的東西進(jìn)行分類
        public void PostBuyProduct()
        {
            Console.WriteLine("終于買完了,現(xiàn)在要對(duì)東西分一下,相機(jī)是張三的;Iphone是李四的..........");
        }
    }

在上面的代碼中都有相應(yīng)的注釋,這里也不多解釋了。

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

看完代理模式的實(shí)現(xiàn)之后,下面就以上面的例子來分析下代理模式的類圖結(jié)構(gòu)。具體的類圖如下所示:

C#設(shè)計(jì)模式中代理模式怎么用

在上面類圖中,代理模式所涉及的角色有三個(gè):

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

代理主題角色(Friend):代理主題角色內(nèi)部含有對(duì)真實(shí)主題的引用,從而可以操作真實(shí)主題對(duì)象;代理主題角色負(fù)責(zé)在需要的時(shí)候創(chuàng)建真實(shí)主題對(duì)象;代理角色通常在將客戶端調(diào)用傳遞到真實(shí)主題之前或之后,都要執(zhí)行一些其他的操作,而不是單純地將調(diào)用傳遞給真實(shí)主題對(duì)象。例如這里的PreBuyProduct和PostBuyProduct方法就是代理主題角色所執(zhí)行的其他操作。

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

附:在實(shí)際開發(fā)過程中,我們?cè)诳蛻舳颂砑臃?wù)引用的時(shí)候,在客戶程序中會(huì)添加一些額外的類,在客戶端生成的類扮演著代理主題角色,我們客戶端也是直接調(diào)用這些代理角色來訪問遠(yuǎn)程服務(wù)提供的操作。這個(gè)是遠(yuǎn)程代理的一個(gè)典型例子。

三、代理模式的優(yōu)缺點(diǎn)

全面分析完代理模式之后,讓我們看看這個(gè)模式的優(yōu)缺點(diǎn):

優(yōu)點(diǎn):

  1. 代理模式能夠?qū)⒄{(diào)用用于真正被調(diào)用的對(duì)象隔離,在一定程度上降低了系統(tǒng)的耦合度;

  2. 代理對(duì)象在客戶端和目標(biāo)對(duì)象之間起到一個(gè)中介的作用,這樣可以起到對(duì)目標(biāo)對(duì)象的保護(hù)。代理對(duì)象可以在對(duì)目標(biāo)對(duì)象發(fā)出請(qǐng)求之前進(jìn)行一個(gè)額外的操作,例如權(quán)限檢查等。

缺點(diǎn):

  1. 由于在客戶端和真實(shí)主題之間增加了一個(gè)代理對(duì)象,所以會(huì)造成請(qǐng)求的處理速度變慢

  2. 實(shí)現(xiàn)代理類也需要額外的工作,從而增加了系統(tǒng)的實(shí)現(xiàn)復(fù)雜度。

關(guān)于“C#設(shè)計(jì)模式中代理模式怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享題目:C#設(shè)計(jì)模式中代理模式怎么用-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://m.kartarina.com/article12/cddpdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器企業(yè)網(wǎng)站制作、網(wǎng)站策劃、App開發(fā)、網(wǎng)站設(shè)計(jì)公司、域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
主站蜘蛛池模板: 最新国产AV无码专区亚洲| 亚洲色无码专区一区| 国产日韩精品中文字无码| 无码日韩AV一区二区三区| 中文字幕无码免费久久9一区9| 国产成人无码一区二区在线播放 | 亚洲av午夜精品无码专区| 无码无套少妇毛多18PXXXX| 无码国产成人午夜电影在线观看| 一本色道无码道在线观看| 人妻aⅴ无码一区二区三区| 国产色无码专区在线观看| 亚洲a∨无码男人的天堂| 久久精品无码一区二区三区日韩 | 国模无码人体一区二区| 久久精品无码午夜福利理论片| 妖精色AV无码国产在线看| 人妻无码αv中文字幕久久琪琪布| 国产av无码久久精品| 精品国产a∨无码一区二区三区 | 国产精品无码久久久久久| 曰产无码久久久久久精品 | 日韩精品无码视频一区二区蜜桃| 久久久久无码精品亚洲日韩| 麻豆人妻少妇精品无码专区 | 亚洲无码高清在线观看| 亚洲AV无码成人精品区日韩| 亚洲中文字幕无码一区| 日韩AV无码不卡网站| 亚洲精品无码你懂的| 亚洲a∨无码男人的天堂| 丰满熟妇人妻Av无码区| 成人无码a级毛片免费| 曰韩无码AV片免费播放不卡| 无码成人AAAAA毛片| 日韩人妻无码一区二区三区久久99 | 无码国产精品一区二区免费| 无码专区国产精品视频| 色国产色无码色欧美色在线| 亚洲国产精品无码观看久久| 毛片免费全部播放无码|