浅析.NET开发中代理模式的使用

当我们需要使用的对象很复杂或者需要很长时间去构造,这时就可以使用代理模式(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

时间: 2024-09-07 18:11:37

浅析.NET开发中代理模式的使用的相关文章

(iOS开发总结)代理模式

一.代理模式 代理模式(Delegate)即委托模式,不仅在应用开发中经常使用,而且是iOS SDK设计中常见的一种设计模式,例如UIKit框架中UI的交互逻辑通常需要开发人员自定义代理类去处理. 开发中代理模式常见用途 传值 功能分化接口设计 交互接口(自定义控件) 二.理解 撇开学科概念,代理俩字的意思是:一方帮助另一方代为处理(完成)一些工作或者任务.作为名词,则这个"一方" 就叫代理.如此理解,代理也可为独立的一者. 那么在开发这里,开始应该是这样: 类A引用着一个类B对象,类

精解Java中代理模式的实现

简介摘要: 代理模式是GOF设计模式中的一种,常用于权限模块的架构设计,其根本的原理是通过将一个代理对象交给调用者,使得调用者不能直接使用相应的功能模块,所 有的调用被传递给代理对象,代理对象负责对真实模块完成调用,在调用者与被调用者之间建立了一个隔离带,我们可以使 代理模式是GOF设计模式中的一种,常用于权限模块的架构设计,其根本的原理是通过将一个代理对象交给调用者,使得调用者不能直接使用相应的功能模块,所有的调用被传递给代理对象,代理对象负责对真实模块完成调用,在调用者与被调用者[bei t

JavaScript设计模式开发中组合模式的使用教程_基础知识

我们平时开发过程中,一定会遇到这种情况:同时处理简单对象和由简单对象组成的复杂对象,这些简单对象和复杂对象会组合成树形结构,在客户端对其处理的时候要保持一致性.比如电商网站中的产品订单,每一张产品订单可能有多个子订单组合,比如操作系统的文件夹,每个文件夹有多个子文件夹或文件,我们作为用户对其进行复制,删除等操作时,不管是文件夹还是文件,对我们操作者来说是一样的.在这种场景下,就非常适合使用组合模式来实现. 基本知识 组合模式:将对象组合成树形结构以表示"部分-整体"的层次结构,组合模式

谈基于.Net平台开发中的模式窗体

适用于:Windows 操作系统 .NET Framework 1.x,2.0运行时环境 .NET Windows开发Visual Studio 2005 概述 何谓模式窗体?简单的可以理解为窗体对话框,用户必须在完成该窗体上的操作或关闭窗体后才能返回打开此窗体的窗体.本文不对模式窗体的定义.特征.功能做具体讨论,主要把重点放在如何在.net窗体应用程序中有效的使用模式窗体,解决使用模式窗体中碰到的常见问题. 模式窗体的属性设置 在.net中一个System.Windows.Forms.Form

Java程序开发中代理技术的使用方法

程序 如果你这样的需求:在运行时创建实现一组给定接口的类,注意这个类是在运行时创建的,你就需要使用JAVA中的代理类来达成你的要求. 代理类提供在运行时创建类的能力,这个新建的类能实现你指定的接口. 当然你不能在运行时为要实现的接口中的方法定义新代码,而是提供一个调用处理器来实现.调用处理器是实现了InvocationHandler接口的类的对象,此接口只有一个方法: Object invoke(Object proxy,Method mtd,Object[] args) 其中proxy是代理对

iOS App设计模式开发中策略模式的实现示例_IOS

这次介绍一下策略模式(Strategy Pattern),相比之下是一种比较简单的模式.它也叫政策模式(Policy Pattern). 策略模式使用的就是面向对象的继承和多态机制,其他的没有什么玄机.策略模式适合使用在: 1. 多个类只有在算法或行为上稍有不同的场景. 2. 算法需要自由切换的场景. 3. 需要屏蔽算法规则的场景. 使用策略模式当然也有需要注意的地方,那么就是策略类不要太多,如果一个策略家族的具体策略数量超过4个,则需要考虑混合模式,解决策略类膨胀和对外暴露问题.在实际项目中,

浅析JSP开发中的对象和范围属性

在JSP页面中的对象,包括用户创建的对象(例如,JavaBean对象)和JSP的隐含对象,都有一个范围属性.范围定义了在什么时间内,在哪一个JSP页面中可以访问这些对象.例如,session对象在会话期间内,可以在多个页面中被访问.application对象在整个Web应用程序的生命周期中都可以被访问.在JSP中,有4种范围,如下所示. ·page范围 具有page范围的对象被绑定到javax.servlet.jsp.PageContext对象中.在这个范围内的对象,只能在创建对象的页面中访问.

浅析LigerUi开发中谨慎载入common.css文件

这一句是载页面载入时,显示正在载入动画效果,但是极大影响了程序开发里的调试.给新手的建议,希望可以参考下   <%--<link href="../lib/css/common.css" rel="stylesheet" type="text/css" />  --%>这一句是载页面载入时,显示正在载入动画效果,但是极大影响了程序开发里的调试,太菜鸟了,光在这上面花了太多的时间,要命,希望新手们注意!  

Java的代理模式

前几天一个网友指出了我的文章中一些有失偏颇之处,那些文章都是我在阅读Java Core的时候做的总结,顺便加上我个人的一些理解.因为看的e文版,理解上有些地方可能还欠妥.下面谈一下对Java中代理模式(Proxy)的认识. 代理,想必大家都应该知道是什么冬冬了,一般的手机产商都有代理商,歌星们都有自己的经纪人,如此这些都可以看作是一种代理模式.下面我选择如下的一种情景来进行讲述:某董事长出差,但是此时公司有个聚会,董事长买单,但是由他的秘书去结帐.我们就权且把这个看作一个代理行为,^_^. 首先