代理模式(Proxy  英 ['prɒksɪ]  美 ['prɑksi]   n. 代理人;委托书;代用品 )

为其他对象提供一种代理以控制对这个对象的访问。

 

Subject 类,定义了 RealSubject 和 Proxy 的共用接口,这样就在任何使用 RealSubject 的地方都可以使用哈 Proxy。

 

1 abstract class Subject{
2      public adstract void Request();      
3 }
View Code

RealSubject 类,定义 Proxy 所代表的真实实体

1 class RealSubject : Subject{
2     public override void Request(){
3       //真实的请求  
4   }
5 }
View Code

 Proxy 类,保存一个引用使得代理可以访问实体,并提供一个与 Subject 的接口相同的接口,这样代理就可以用来替代实体。

1 class Proxy : Subject{
2         RealSubject realSubject;
3         public override void Request(){
4            if(realSubject == nul){
5                 realSubject = new RealSubject();
6           }  
7            realSubject.Request();
8      }  
9 }
View Code

 客户端代码

Proxy proxy = new Proxy();
proxy.Request();
View Code

就是代理类 持有了目标的一个引用(对象),并通过继承可以在代理的方法中调用目标的方法

 

 

代理一版分为几种:

第一:远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。

第二:虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。 例如 打开网页文字立刻出现,图片是一点点刷出来的,那些未打开的图片框,就是通过代理来替代真实的图片,此时代理存放真实图片的大小和路径。

第三:安全代理,用来控制真实对象访问时的权限。

第四:智能指引,是指当调用真实的对象时,代理处理另外一些事。

 

代理模式其实就是在访问对象时引入一定程度的简介性,因为这种间接性,可以附加多种用途。

 

posted on 2017-09-06 16:24  Mr.糖马儒  阅读(112)  评论(0)    收藏  举报