代理模式

代理模式:为其它对象提供了一种代理,以控制对这个对象的访问

代理在客户端和实际实体之间增加了一层处理,主要有下列几种使用场合
1 远程代理,为一个对象在不同的地址空间提供局部代表,隐藏了一个对象存在于不同地址空间的事实,如Web引用
2 虚拟代理,根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象,从而优化性能,如浏览器
3 安全代理,用来控制真实对象访问时的权限
4 智能引用,当调用真实对象时,代理处理另外一些事,如自动释放,持久化对象,加锁等

最简单的代理模式例子如下:

    /// <summary>
    /// 定义实体和代理都需要实现的接口
    /// </summary>
    public interface ISubject
    {
        void Request();
    }

    /// <summary>
    /// 定义实际的实体
    /// </summary>
    public class RealSubject : ISubject
    {
        public void Request()
        {
            Console.WriteLine("Real Request");
        }
    }

    /// <summary>
    /// 定义代理,其中保存一个实体的引用,在调用代理方法时执行实际实体的方法
    /// </summary>
    public class Proxy : ISubject
    {
        ISubject subject;

        public Proxy()
        {
            subject = new RealSubject();
        }

        public void Request()
        {
            subject.Request();
        }
    }

  客户端通过调用代理,调用实际对象的方法:

 Proxy proxy = new Proxy();
 proxy.Request();
posted @ 2016-04-15 14:44  angela217  阅读(160)  评论(0编辑  收藏  举报