Introducir el modo proxy (Proxy)
Cuando el objeto que necesitamos usar es complejo o lleva mucho tiempo construirlo, podemos usar el modo proxy (Proxy). Por ejemplo, si construir un objeto requiere tiempo y recursos de la computadora, el modo proxy. (Proxy) nos permite controlar esta situación hasta que necesitemos usar el objeto real. Un proxy generalmente contiene los mismos métodos que el objeto que se usará. Una vez que comience a usar el objeto, estos métodos se pasarán al objeto real. el proxy. Algunos pueden usar el patrón de proxy ( Proxy)
Un objeto como una imagen grande tarda mucho en cargarse
Un resultado de cálculo que tarda mucho en completarse y debe calcularse antes de mostrar resultados intermedios durante el proceso
Un objeto que existe en una computadora remota necesita cargar el objeto remoto a través de la red, lo que llevará mucho tiempo, especialmente durante el período pico de transmisión de red
Un objeto solo tiene El modo proxy de acceso limitado (Proxy) puede verificar los permisos del usuario
El modo proxy (Proxy) también se puede utilizar para distinguir las solicitudes de una instancia de objeto del acceso real. Por ejemplo, durante el proceso de inicialización del programa
Se pueden crear varios objetos, pero no todos de inmediato. El modo proxy (Proxy) se puede usar para cargar. los objetos reales requeridos
Este es un proceso que debe cargarse y Un programa que muestra una imagen grande debe determinar qué imagen mostrar cuando se inicia el programa, pero la imagen real solo se puede mostrar después de completamente cargado! En este momento podemos usar el modo proxy (Proxy)
Este modo proxy (Proxy) puede retrasar la carga de la imagen real hasta que reciba una solicitud de pintura. Durante la carga de la imagen real que podemos usar. el modo proxy (Proxy) Precargue un gráfico relativamente pequeño y simple en la ubicación donde se mostrará la imagen real
Código de Image Proxy
Clase pública ImageProxy
Privado hecho como booleano
Privado tm como temporizador
Público Sub New()
hecho = Falso
amp # ;Set segundos de retraso del temporizador
p>
tm = New Timer( _
New TimerCallback(AddressOf tCallback) Me )
End Sub
Función pública isReady() como booleano
Retorno hecho
Función final
Función pública getImage() Como imagen
Dim img Como generador de imágenes
amp ;# ;Muestra la imagen previa hasta que se carga la imagen real
Si está listo entonces
img = New FinalImage()
Else
img = New QuickImage()
Finalizar si
Devolver img getImage
Finalizar función
Public Sub tCallba
ck(ByVal obj As Object)
done = True
tm Dispose()
End Sub
End Class
Definir una interfaz simple
Interfaz pública Imager
Función getImage() Como imagen
Interfaz final
Implementar la interfaz
Clase de imagen precargada
Clase pública QuickImage
Implementa Imager
Función pública getImage() como imagen _
Implementa Imager getImage
Devolver nuevo mapa de bits(amp;#;Box gifamp;#;)
Función final
Clase final
Clase que carga la imagen real
Clase pública FinalImage
Implementa Imager
Función pública getImage() como imagen _
Implementa Imager getImage
Devolver nuevo mapa de bits(amp; # ; flowrtree jpgamp; # ;)
Función final
Clase final
En Definir un proxy de imagen Instancia (Proxy) en el formulario que muestra la imagen y carga la imagen en el evento del botón cargar imagen
Private imgProxy As ImageProxy
Public Sub New()
p>MyBase New
Form = Yo
InitializeComponent
imgproxy = New ImageProxy()
End Sub
Sub protegido btLoad_Click (remitente ByVal como objeto ByVal e como System EventArgs) maneja btLoad Click
pic Image = imgProxy getImage
End Sub
Resumen lishixinzhi/ Artículo/programa/ASP/201405/30785