熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> ASP編程 >> 正文

介紹一下代理模式(Proxy)

2022-06-13   來源: ASP編程 

當我們需要使用的對象很復雜或者需要很長時間去構造這時就可以使用代理模式(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 延遲

tm = New Timer( _

New TimerCallback(AddressOf tCallback) Me )

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 imggetImage

End Function

Public Sub tCallback(ByVal obj As Object)

done = True

tmDispose()

End Sub

End Class

定義一個簡單的接口

Public Interface Imager

Function getImage() As image

End Interface

實現接口

預先載入的圖像的類

Public Class QuickImage

Implements Imager

Public Function getImage() As Image _

Implements ImagergetImage

Return New bitmap(&#;Boxgif&#;)

End Function

End Class

載入實際圖像的類

Public Class FinalImage

Implements Imager

Public Function getImage() As Image _

Implements ImagergetImage

Return New Bitmap(&#;flowrtreejpg&#;)

End Function

End Class

在顯示圖像的窗體中定義一個圖像代理的(Proxy)實例在載入圖像按鈕事件中載入圖像

Private imgProxy As ImageProxy

Public Sub New()

MyBaseNew

Form = Me

InitializeComponent

imgproxy = New ImageProxy()

End Sub

Protected Sub btLoad_Click(ByVal sender As Object ByVal e As SystemEventArgs) Handles btLoadClick

picImage = imgProxygetImage

End Sub

總結

這只是一個很簡單的例子(例子來自於《c#設計模式》)通過這個例子可以對代理(Proxy)有初步的認識!Adapter模式和代理模式(Proxy)都是在對象間構造一個簡單的層然而Adapter模式向對象提供一個不同的接口代理模式(Proxy)為對象提供相同的接口


From:http://tw.wingwit.com/Article/program/ASP/201405/30785.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.