當我們需要使用的對象很復雜或者需要很長時間去構造
一些可以使用代理模式(Proxy)的情況
一個對象
一個需要很長時間才可以完成的計算結果
一個存在於遠程計算機上的對象
一個對象只有有限的訪問權限
代理模式(Proxy)也可以被用來區別一個對象實例的請求和實際的訪問
可能建立多個對象
這是一個需要載入和顯示一幅很大的圖像的程序
這個代理模式(Proxy)可以延遲實際圖像的載入
圖像Proxy代碼
Public Class ImageProxy
Private done As Boolean
Private tm As Timer
Public Sub New()
done = False
tm = New Timer( _
New TimerCallback(AddressOf tCallback)
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
End Function
Public Sub tCallback(ByVal obj As Object)
done = True
tm
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
Return New bitmap(
End Function
End Class
載入實際圖像的類
Public Class FinalImage
Implements Imager
Public Function getImage() As Image _
Implements Imager
Return New Bitmap(
End Function
End Class
在顯示圖像的窗體中
Private imgProxy As ImageProxy
Public Sub New()
MyBase
Form
InitializeComponent
imgproxy = New ImageProxy()
End Sub
Protected Sub btLoad_Click(ByVal sender As Object
pic
End Sub
總結
這只是一個很簡單的例子(例子來自於《c#設計模式》)
From:http://tw.wingwit.com/Article/program/ASP/201405/30785.html