|
當(dāng)我們需要使用的對(duì)象很復(fù)雜或者需要很長(zhǎng)時(shí)間去構(gòu)造,這時(shí)就可以使用代理模式(Proxy)。例如:如果構(gòu)建一個(gè)對(duì)象很耗費(fèi)時(shí)間和計(jì)算機(jī)資源,代理模式(Proxy)允許我們控制這種情況,直到我們需要使用實(shí)際的對(duì)象。一個(gè)代理(Proxy)通常包含和將要使用的對(duì)象同樣的方法,一旦開(kāi)始使用這個(gè)對(duì)象,這些方法將通過(guò)代理(Proxy)傳遞給實(shí)際的對(duì)象。
一些可以使用代理模式(Proxy)的情況:
1、一個(gè)對(duì)象,比如一幅很大的圖像,需要載入的時(shí)間很長(zhǎng)。
2、一個(gè)需要很長(zhǎng)時(shí)間才可以完成的計(jì)算結(jié)果,并且需要在它計(jì)算過(guò)程中顯示中間結(jié)果
3、一個(gè)存在于遠(yuǎn)程計(jì)算機(jī)上的對(duì)象,需要通過(guò)網(wǎng)絡(luò)載入這個(gè)遠(yuǎn)程對(duì)象則需要很長(zhǎng)時(shí)間,特別是在網(wǎng)絡(luò)傳輸高峰期。
代理模式(Proxy)也可以被用來(lái)區(qū)別一個(gè)對(duì)象實(shí)例的請(qǐng)求和實(shí)際的訪問(wèn),例如:在程序初始化過(guò)程中可能建立多個(gè)對(duì)象,但并不都是馬上使用,代理模式(Proxy)可以載入需要的真正的對(duì)象。
這是一個(gè)需要載入和顯示一幅很大的圖像的程序,當(dāng)程序啟動(dòng)時(shí),就必須確定要顯示的圖像,但是實(shí)際的圖像只能在完全載入后才可以顯示!這時(shí)我們就可以使用代理模式(Proxy)。
這個(gè)代理模式(Proxy)可以延遲實(shí)際圖像的載入,直到它接收到一個(gè)paint請(qǐng)求。在實(shí)際圖像的載入期間我們可以通過(guò)代理模式(Proxy)在實(shí)際圖像要顯示的位置預(yù)先載入一個(gè)比較小、簡(jiǎn)單的圖形。
圖像Proxy代碼:
Public Class ImageProxy
Private done As Boolean
Private tm As Timer
Public Sub New()
done = False
it知識(shí)庫(kù):淺析.NET開(kāi)發(fā)中代理模式的使用,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。