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

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

設計模式之代理模式(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)為對象提供相同的接口


主站蜘蛛池模板: 天天干伊人| 三级黄色在线视频中文 | 亚洲精品午夜久久aaa级久久久 | 香蕉人人超人人超免费看视频 | 天天曰曰 | 午夜福免费福利在线观看 | 全部免费毛片免费播放 | 欧美专区日韩 | 四虎在线视频 | 亚洲日本视频 | 天天操天天干天天爽 | 色天天综合 | 色婷婷一区二区三区四区成人 | 中文精品视频一区二区在线观看 | 欧美囗交 | 在线亚洲观看 | 亚洲欧美一区二区三区麻豆 | 日本xxxxxx片免费播放18 | 亚洲高清在线观看 | 色视在线 | 日韩毛片在线看 | 亚洲国产资源 | 深夜免费在线观看 | 亚洲精品高清在线观看 | 日本一区二区三区在线看 | 日本卡一卡2卡3卡4精品卡无人区 | 日韩在线aⅴ免费视频 | 色老司机| 日韩去日本高清在线 | 日本精品高清一区二区2021 | 私色综合网 | 一级黄色在线播放 | 日本激情视频在线观看 | 日本免费一区二区三区a区 日本免费一二三区 | 搜索黄色毛片 | 四虎影视免费观看免费观看 | 亚欧精品一区二区三区 | 亚洲综合色在线 | 欧美特级午夜一区二区三区 | 亚洲国产毛片aaaaa无费看 | 日韩毛片免费视频一级特黄 |