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

歡迎訪問 生活随笔!

生活随笔

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

综合教程

C#设计模式之代理模式(四)

發(fā)布時(shí)間:2023/10/11 综合教程 68 老码农
生活随笔 收集整理的這篇文章主要介紹了 C#设计模式之代理模式(四) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

15.7 代理模式效果與適用場景

代理模式是常用的結(jié)構(gòu)型設(shè)計(jì)模式之一,它為對(duì)象的間接訪問提供了一個(gè)解決方案,可以對(duì)對(duì)象的訪問進(jìn)行控制。代理模式類型較多,其中遠(yuǎn)程代理、虛擬代理、保護(hù)代理等在軟件開發(fā)中應(yīng)用非常廣泛。

15.7.1 模式優(yōu)點(diǎn)

代理模式的共同優(yōu)點(diǎn)如下:

(1) 能夠協(xié)調(diào)調(diào)用者和被調(diào)用者,在一定程度上降低了系統(tǒng)的耦合度。

(2) 客戶端可以針對(duì)抽象主題角色進(jìn)行編程,增加和更換代理類無須修改源代碼,符合開閉原則,系統(tǒng)具有較好的靈活性和可擴(kuò)展性。

此外,不同類型的代理模式也具有獨(dú)特的優(yōu)點(diǎn),例如:

(1) 遠(yuǎn)程代理為位于兩個(gè)不同地址空間對(duì)象的訪問提供了一種實(shí)現(xiàn)機(jī)制,可以將一些消耗資源較多的對(duì)象和操作移至性能更好的計(jì)算機(jī)上,提高系統(tǒng)的整體運(yùn)行效率。

(2) 虛擬代理通過一個(gè)消耗資源較少的對(duì)象來代表一個(gè)消耗資源較多的對(duì)象,可以在一定程度上節(jié)省系統(tǒng)的運(yùn)行開銷。

(3) 緩沖代理為某一個(gè)操作的結(jié)果提供臨時(shí)的緩存存儲(chǔ)空間,以便在后續(xù)使用中能夠共享這些結(jié)果,優(yōu)化系統(tǒng)性能,縮短執(zhí)行時(shí)間。

(4) 保護(hù)代理可以控制對(duì)一個(gè)對(duì)象的訪問權(quán)限,為不同用戶提供不同級(jí)別的使用權(quán)限。

15.7.2 模式缺點(diǎn)

代理模式的主要缺點(diǎn)如下:

(1) 由于在客戶端和真實(shí)主題之間增加了代理對(duì)象,因此有些類型的代理模式可能會(huì)造成請(qǐng)求的處理速度變慢,例如保護(hù)代理。

(2) 實(shí)現(xiàn)代理模式需要額外的工作,而且有些代理模式的實(shí)現(xiàn)過程較為復(fù)雜,例如遠(yuǎn)程代理。

15.7.3 模式適用場景

代理模式的類型較多,不同類型的代理模式有不同的優(yōu)缺點(diǎn),它們應(yīng)用于不同的場合:

       (1) 當(dāng)客戶端對(duì)象需要訪問遠(yuǎn)程主機(jī)中的對(duì)象時(shí)可以使用遠(yuǎn)程代理。

       (2) 當(dāng)需要用一個(gè)消耗資源較少的對(duì)象來代表一個(gè)消耗資源較多的對(duì)象,從而降低系統(tǒng)開銷、縮短運(yùn)行時(shí)間時(shí)可以使用虛擬代理,例如一個(gè)對(duì)象需要很長時(shí)間才能完成加載時(shí)。

       (3) 當(dāng)需要為某一個(gè)被頻繁訪問的操作結(jié)果提供一個(gè)臨時(shí)存儲(chǔ)空間,以供多個(gè)客戶端共享訪問這些結(jié)果時(shí)可以使用緩沖代理。通過使用緩沖代理,系統(tǒng)無須在客戶端每一次訪問時(shí)都重新執(zhí)行操作,只需直接從臨時(shí)緩沖區(qū)獲取操作結(jié)果即可。

       (4) 當(dāng)需要控制對(duì)一個(gè)對(duì)象的訪問,為不同用戶提供不同級(jí)別的訪問權(quán)限時(shí)可以使用保護(hù)代理。

       (5) 當(dāng)需要為一個(gè)對(duì)象的訪問(引用)提供一些額外的操作時(shí)可以使用智能引用代理。

習(xí)題

1. Windows操作系統(tǒng)中的應(yīng)用程序快捷方式是(    )模式的應(yīng)用實(shí)例。

A. 代理 (Proxy)            B. 組合 (Composite)

C. 裝飾 (Decorator)         D. 外觀 (Facade)

2. 畢業(yè)生通過職業(yè)介紹所找工作,請(qǐng)問該過程蘊(yùn)含了哪種設(shè)計(jì)模式,繪制相應(yīng)的類圖。

3. 在某應(yīng)用軟件中需要記錄業(yè)務(wù)方法的調(diào)用日志,在不修改現(xiàn)有業(yè)務(wù)類的基礎(chǔ)上為每一個(gè)類提供一個(gè)日志記錄代理類,在代理類中輸出日志,如在業(yè)務(wù)方法Method()調(diào)用之前輸出“方法Method()被調(diào)用,調(diào)用時(shí)間為2012-11-5 10:10:10”,調(diào)用之后如果沒有拋異常則輸出“方法Method()調(diào)用成功”,否則輸出“方法Method()調(diào)用失敗”。在代理類中調(diào)用真實(shí)業(yè)務(wù)類的業(yè)務(wù)方法,使用代理模式設(shè)計(jì)該日志記錄模塊的結(jié)構(gòu),繪制類圖并使用C#語言編程模擬實(shí)現(xiàn)。

4. 某軟件公司欲開發(fā)一款基于C/S的網(wǎng)絡(luò)圖片查看器,具體功能描述如下:用戶只需在圖片查看器中輸入網(wǎng)頁URL,程序?qū)⒆詣?dòng)將該網(wǎng)頁所有圖片下載到本地,考慮到有些網(wǎng)頁圖片比較多,而且某些圖片文件比較大,因此將先以圖標(biāo)的方式顯示圖片,不同類型的圖片使用不同的圖標(biāo),并且在圖標(biāo)下面標(biāo)注該圖片的文件名,用戶單擊圖標(biāo)后可查看真正的圖片,界面效果如圖15-7所示。試使用虛擬代理模式設(shè)計(jì)并實(shí)現(xiàn)該圖片查看器。(注:可以結(jié)合多線程機(jī)制,使用一個(gè)線程顯示小圖標(biāo),同時(shí)啟動(dòng)另一個(gè)線程在后臺(tái)加載原圖。)

圖15-7 圖片查看器界面效果圖

總結(jié)

以上是生活随笔為你收集整理的C#设计模式之代理模式(四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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