设计模式之六:代理模式

18 篇文章 2 订阅
12 篇文章 0 订阅

        代理模式(Proxy Pattern)又称委托模式:

       定义:Provide a surrogate or placeholder for another object to control access to it.(为其他对象提供一种代理以控制对这个对象的访问)。

       

        优点:

        1、职责清晰:真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件事务,附带                的结果就是编程简洁清晰;

        2、高扩展性:具体主题角色是随时都会发生变化的,只要它实现了接口,甭管它如何变化,我们的代理类完全就可以在不                做任何修改的情况下使用;

        3、智能化

        通用代码结构如下:

        

/// <summary>
    /// 抽象主题类
    /// </summary>
    public interface Subject
    {
        public void request();
    }
    /// <summary>
    /// 真实主题类
    /// </summary>
    public class RealSubject : Subject
    {
        public void request()
        {
            //业务逻辑处理
        }
    }
    /// <summary>
    /// 代理类
    /// </summary>
    public class Proxy : Subject
    {
        //要代理那个实现类
        private Subject subject = null;
        //默认被代理者
        public Proxy()
        {
            this.subject = new Proxy();
        }
        //通过构造函数传递代理者
        public Proxy(Object  objects)
        { 
        }
        //实现接口中定义的方法
        public void request()
        {
            this.before();
            this.subject.request();
            this.after();
        }
        //预处理
        private void before()
        { 
        }
        //善后处理
        private void after()
        { 
        }
    }

   在实际开发过程中,代理类的实现比上述代码要复杂很多,代理模式根据其目的和实现方式不同可分为很多种类,其中常用的几种代理模式简要说明如下:

       (1) 远程代理(Remote Proxy)为一个位于不同的地址空间的对象提供一个本地的代理对象,这个不同的地址空间可以是在同一台主机中,也可是在另一台主机中,远程代理又称为大使(Ambassador)

       (2) 虚拟代理(Virtual Proxy)如果需要创建一个资源消耗较大的对象,先创建一个消耗相对较小的对象来表示,真实对象只在需要时才会被真正创建。

       (3) 保护代理(Protect Proxy)控制对一个对象的访问,可以给不同的用户提供不同级别的使用权限。

       (4) 缓冲代理(Cache Proxy)为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果。

       (5) 智能引用代理(Smart Reference Proxy)当一个对象被引用时,提供一些额外的操作,例如将对象被调用的次数记录下来等。

      好了,这一章就写到这,欢迎大家加入QQ群:280993838 。或者关注我的公众号:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值