博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

设计模式——代理模式(Proxy Pattern)

Posted on 2008-09-01 09:23  Anna Yang  阅读(278)  评论(0编辑  收藏  举报
设计模式(13):代理模式(Proxy Pattern)
 
代理模式(Proxy Pattern)
定义
      为其他对象提供一种代理以控制对这个对象的访问
概述
      在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切。这就是本文要说的Proxy模式
 
代理模式(Proxy Pattern)结构图
上图解析:
Subject类:
abstract class clsSubject
    {
       
public abstract void Request();       
    }
 
realSubject类:
class clsRealSubject:clsSubject
    {
        
public clsRealSubject()
        {
        }
        
public override void Request()
        {
            Console.WriteLine(
"真实的请求");
        }
    }
 
Proxy类:
 class clsProxy:clsSubject
    {
        clsRealSubject realsubject;
        
public clsProxy()
        {
        }
        
public override void Request()
        {
            
if (realsubject == null)
            {
                realsubject 
= new clsRealSubject();
            }
            realsubject.Request();
        }
    }
 
Client类:
class clsClient
    {
        
static void Main(string[] args)
        {
            clsProxy proxy 
= new clsProxy();
            proxy.Request();

            Console.Read();
        }
    }
 
代理的应用
1.远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实
2.虚拟代理,是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。
3.安全代理,用来控制真实对象访问的权限。
4.职能指引,是指当调用真实的对象时,代理处理另外一些事。