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

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

淺析.NET開發中代理模式的使用

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

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

  一些可以使用代理模式(Proxy)的情況:

  1、一個對象,比如一幅很大的圖像,需要載入的時間很長。

  2、一個需要很長時間才可以完成的計算結果,并且需要在它計算過程中顯示中間結果

  3、一個存在于遠程計算機上的對象,需要通過網絡載入這個遠程對象則需要很長時間,特別是在網絡傳輸高峰期。

  4、一個對象只有有限的訪問權限,代理模式(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 Boolean
  Return 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 Imager
 Public 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)為對象提供相同的接口。




主站蜘蛛池模板: 亚洲 欧美 偷自乱 图片 | 三级免费黄 | 欧美又粗又硬又大久久久 | 人人干网站 | 日韩三级在线免费观看 | 亚洲成在人线影视天堂网 | 亚洲都市激情 | 骚妇毛片 | 日韩一区二区中文字幕 | 亚洲精品视频在线播放 | 日韩欧美视频在线 | 中文有码中文字幕免费视频 | 中文字幕免费人成乱码中国 | 日本大蕉香蕉大视频在线观看 | 青青草成人免费在线视频 | 亚洲国产观看 | 色综合天天综合网国产成人 | 日本国产一区二区三区 | 日本三级视频在线播放 | 亚洲黄色影视 | 日本在线免费看 | 青草免费免费观看视频在线 | 欧美一区二区三区美人 | 婷婷狠狠| 欧美在线免费 | 亚洲欧洲免费视频 | 欧美在线一二三区 | 王者天下第五季在线观看 | 青草视频污 | 亚洲精品亚洲人成在线 | 亚洲日韩成人 | 日本xxxwww在线观看免费 | 色天天综合色天天天天看大 | 日韩成人黄色 | 网站在线看 | 日韩爱爱片 | 亚洲六区| 亚洲六月丁香色婷婷综合久久 | 人人干人人爽 | 五月婷婷六月丁香在线 | 日韩免费在线观看 |