【设计模式】代理模式

原创 2016年06月01日 22:40:37

本文内容参考自《大话设计模式》(程杰 著)

代理模式

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

这里写图片描述

abstract class Subject
{
    public abstract void Request();
}

//RealSubject类,定义Proxy所代表的真实实体
class RealSubject : Subject
{
    public override void Request()
    {
        Console.WriteLine("真实的请求");
    }
}

//Proxy类,保存一个RealSubject的引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以用了替代实体了
class Proxy : Subject
{
    RealSubject realSubject;
    public override void Request()
    {
        if (realSubject == null)
        {
            realSubject = new RealSubject();
        }
        realSubject.Request();
    }
}

//客户端代码
static void Main()
{
    Proxy proxy = new Proxy();
    proxy.Request();
    //...
}

应用场景

1.远程代理

为一个对象在不同的地址空间提供局部代表,从而隐藏了一个对象存在于不同地址空间的事实。

2.虚拟代理

根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建。使用虚拟代理模式的好处就是代理对象可以在必要的时候才将被代理的对象加载;代理可以对加载的过程加以必要的优化。当一个模块的加载十分耗费资源的情况下,虚拟代理的好处就非常明显。

3.安全代理

用来控制真实对象访问时的权限。

4.智能引用

当一个对象被引用时,提供一些额外的操作,比如将对此对象调用的次数记录下来,或者进行引用计数并在计数值为0的时候释放资源等。

版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/jiange_zh

相关文章推荐

设计模式之代理模式

  • 2017年08月22日 21:55
  • 35KB
  • 下载

设计模式--代理模式【Proxy Pattern】

什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道被代理人(真实客户)能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被代理的人...

C#设计模式--代理模式举例

  • 2017年02月27日 18:20
  • 27KB
  • 下载

设计模式系列之代理模式

  • 2016年01月28日 11:34
  • 89KB
  • 下载

Android开发中无处不在的设计模式——动态代理模式

继续更新设计模式系列,写这个模式的主要原因是最近看到了动态代理的代码。 先来回顾一下前5个模式: - Android开发中无处不在的设计模式——单例模式 - Android开发中无处不在的设...

.net实现设计模式之代理模式

  • 2012年06月10日 16:49
  • 24KB
  • 下载

Java设计模式-代理模式

  • 2015年01月25日 01:27
  • 10KB
  • 下载

【学习笔记javascript设计模式与开发实践(代理模式)----6】

第6章代理模式  代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。 代理模式是一种非常有意义的模式,在生活中可以找到很多代理模式的场景。比如明星都有经济人作为代理。如果想请...

android设计模式之代理模式

  • 2012年02月24日 17:17
  • 51KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【设计模式】代理模式
举报原因:
原因补充:

(最多只允许输入30个字)