六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

設計模式之代理模式(Proxy)

[摘要]當我們需要使用的對象很復雜或者需要很長時間去構造,這時就可以使用代理模式(Proxy)。例如:如果構建一個對象很耗費時間和計算機資源,代理模式(Proxy)允許我們控制這種情況,直到我們需要使用實際的對象。一個代理(Proxy)通常包含和將要使用的對象同樣的方法,一旦開始使用這個對象,這些方法將通...

當我們需要使用的對象很復雜或者需要很長時間去構造,這時就可以使用代理模式(Proxy)。例如:如果構建一個對象很耗費時間和計算機資源,代理模式(Proxy)允許我們控制這種情況,直到我們需要使用實際的對象。一個代理(Proxy)通常包含和將要使用的對象同樣的方法,一旦開始使用這個對象,這些方法將通過代理(Proxy)傳遞給實際的對象。  一些可以使用代理模式(Proxy)的情況:  一個對象,比如一幅很大的圖像,需要載入的時間很長。  一個需要很長時間才可以完成的計算結果,并且需要在它計算過程中顯示中間結果
 
  一個存在于遠程計算機上的對象,需要通過網絡載入這個遠程對象則需要很長時間,特別是在網絡傳輸高峰期。  一個對象只有有限的訪問權限,代理模式(Proxy)可以驗證用戶的權限  代理模式(Proxy)也可以被用來區別一個對象實例的請求和實際的訪問,例如:在程序初始化過程中  可能建立多個對象,但并不都是馬上使用,代理模式(Proxy)可以載入需要的真正的對象。  這是一個需要載入和顯示一幅很大的圖像的程序,當程序啟動時,就必須確定要顯示的圖像,但是實際的圖像只能在完全載入后才可以顯示!這時我們就可以使用代理模式(Proxy)。  這個代理模式(Proxy)可以延遲實際圖像的載入,直到它接收到一個paint請求。在實際圖像的載入期間我們可以通過代理模式(Proxy)在實際圖像要顯示的位置預先載入一個比較小、簡單的圖形。  圖像Proxy代碼:  Public Class ImageProxy    Private done As Boolean    Private tm As Timer    Public Sub New()        done = False        '設置timer 延遲5秒        tm = New Timer( _        New TimerCallback(AddressOf tCallback), Me, 5000, 0)    End Sub    Public Function isReady() As BooleanReturn done    End Function   Public Function getImage() As Image        Dim img As Imager        '顯示預先的圖像,直到實際圖像載入完成        If isReady Then            img = New FinalImage()        Else            img = New QuickImage()        End If        Return img.getImage    End Function    Public Sub tCallback(ByVal obj As Object)        done = True        tm.Dispose()    End Sub  End Class  定義一個簡單的接口:  Public Interface Imager    Function getImage() As image  End Interface  實現接口:  預先載入的圖像的類:Public Class QuickImage    Implements ImagerPublic Function getImage() As Image _            Implements Imager.getImage        Return New bitmap("Box.gif")    End Function  End Class  載入實際圖像的類:  Public Class FinalImage    Implements Imager    Public Function getImage() As Image _        Implements Imager.getImage        Return New Bitmap("flowrtree.jpg")    End Function  End Class  在顯示圖像的窗體中,定義一個圖像代理的(Proxy)實例,在載入圖像按鈕事件中,載入圖像:  Private imgProxy As ImageProxy    Public Sub New()        MyBase.New        Form1 = Me        InitializeComponent        imgproxy = New ImageProxy()    End Sub    Protected Sub btLoad_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btLoad.Click        pic.Image = imgProxy.getImage    End Sub  總結:  這只是一個很簡單的例子(例子來自于《c#設計模式》),通過這個例子可以對代理(Proxy)有初步的認識!Adapter模式和代理模式(Proxy)都是在對象間構造一個簡單的層。然而,Adapter模式向對象提供一個不同的接口,代理模式(Proxy)為對象提供相同的接口


主站蜘蛛池模板: 日韩精品一区在线观看 | 在线观看91精品国产下载 | 亚洲国产日韩在线观频 | 亚洲成年男人的天堂网 | 视频一区视频二区在线观看 | 伊人网网站 | 日韩 欧美 亚洲 中文字幕 | 亚洲一区二区三区免费在线观看 | 天天干天天要 | 日韩在线视频观看 | 日本视频网站在线观看 | 在线观看 a国v | 午夜影院在线观看免费 | 日韩种子 | 天天夜天干天天爽 | 欧美又粗又长 | 中文在线√天堂 | 天天色啪| 日日射夜夜操 | 日韩毛片在线影视 | 亚洲影视天堂 | 欧美一卡2卡3卡四卡海外精品 | 欧美伊人久久久久久久久影院 | 四虎永久在线日韩精品观看 | 色天天天综合色天天碰 | 添人人躁日日躁夜夜躁夜夜揉 | 欧美一卡二卡三卡四卡 | 天天艹天天射 | 欧美亚洲另类一区中文字幕 | 特片伦理在线网站 | 亚洲精品免费网站 | 手机看片日韩欧美 | 婷婷丁香花 | 天天射天天操天天 | 青青草视频在线观看免费 | 色综合久久综合网观看 | 日韩 欧美 国产 亚洲 制服 | 日本三区四区免费高清不卡 | 亚洲成a人片77788 | 四虎免费影院ww4164h | 一级做a爱片性色毛片武则天五则 |