C#代理模式.doc_第1页
C#代理模式.doc_第2页
C#代理模式.doc_第3页
C#代理模式.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

代理模式:任务:代理(Proxy)模式支持一个对象对另一个对象的创建和访问进行控制。代理通常是个微型的(公共)对象,代表着一个复杂得多的(私有)对象,一旦所需的条件满足,对象就被激活。代理有好多种,最常用的包括:1.虚拟代理:将对象的创建工作交给另外一个对象(延迟复杂环境的创建)2.认证代理:检查一个请求是否拥有正确的访问许可(用户登录)3.远程代理:对请求进行编码并通过网络发送(通过网络发送请求)4.智能代理:在继续发送请求之前添加或更改请求(在好友的book上执行操作)示例using System; class SubjectAccessor public interface ISubject String Request(); private class Subject public String Request() return Subject Request + Choose left doorn; public class Proxy : ISubject Subject subject; public String Request() /虚拟代理仅在方法被第一次调用时创建对象 if (subject = null) Console.WriteLine(Subject inactive); subject = new Subject(); Console.WriteLine(Subject active); return Proxy:Call to + subject.Request(); public class ProtectionProxy : ISubject /认证代理首先要求一个密码 Subject subject; String password = Abracadabra; public String Authenticate(String supplied) if (supplied != password) return Protection Proxy: No access; else subject = new Subject(); return Protection Proxy : Authenticated; public String Request() if (subject = null) return Protection Proxy : Authenticate first; else return Protection Proxy: Call to + subject.Request(); class Client : SubjectAccessor static void Main() Console.WriteLine(Proxy Patternn); ISubject subject1 = new Proxy(); Console.WriteLine(subject1.Request(); Console.WriteLine(subject1.Request(); ProtectionProxy subject = new ProtectionProxy(); Console.WriteLine(subject.Request(); Console.WriteLine(subject as ProtectionProxy).Authenticate(Select); Console.WriteLine(subject as ProtectionProxy).Authenticate(Abracadabra); Console.WriteLine(subject.Request(); 结果:虚拟代理和保护代理的目的都是为了给Subject类提供前端。由于这个原因,Subject被声明为private。它的Request方法时公共的,但它仅对Subject的类可见,即SubjectAccessor中的那些类。用途:代理是带有敏感数据或耗时操作的类的前端。它们经常被用作在绘图系统中,代理在屏幕上占据一块位置,然后激活实际的画笔工具来取得并描绘图像。按同样的方式,这种机制也可用于初始化视频流的缓冲区。跟装饰器模式相同,代理模式也是将请求向下传递给另一个对象。不同之处在于:及时Subject在这层关系中并不是主动的参与者,代理关系也是在设计阶段就确定好的,是事先知道的。而装饰器却可以动态地添加。代理(Proxy)模式的使用情景:你拥有这种情况:1. 创建的代价比较高2. 需要访问控制3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论