4,代理模式

1。定义

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

2,UML图

代理模式UML图

3,代理模式基本代码

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

    public class RealSubject : Subject
    {
        public override void Request()
        {
            Debug.Log("RealSubject  Behaviour");
        }
    }

    public class Proxy : Subject
    {
        private RealSubject RealSubject;

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

        public override void Request()
        {
            if (RealSubject == null)
                RealSubject = new RealSubject();

            RealSubject.Request();
        }
    }
}

4,代理模式的简单的应用

namespace ProxyMosdeExample
{
    interface IGiveGift
    {
        void GiveChoco();
        void GiveFlower();
        void GiveOther();
    }

    public class Pursuit : IGiveGift
    {
        private SchoolGirl SchoolGirl;
        public Pursuit(SchoolGirl schoolGirl)
        {
            this.SchoolGirl = schoolGirl;
        }

        public void GiveChoco()
        {
          
        }

        public void GiveFlower()
        {
        }

        public void GiveOther()
        {
        }
    }

    public class Proxy : IGiveGift
    {
        private Pursuit Pursuit;
        public Proxy(SchoolGirl schoolGirl)
        {
            Pursuit = new Pursuit(schoolGirl);
        }

        public void GiveChoco()
        {
            Pursuit.GiveChoco();
        }

        public void GiveFlower()
        {
            Pursuit.GiveFlower();
        }

        public void GiveOther()
        {
            Pursuit.GiveOther();
        }
    }


    public class SchoolGirl
    {
        public string Name;
    }
}

// 使用
  private void Start()
    {
        SchoolGirl schoolGirl = new SchoolGirl()
        {
            Name = "lili"
        };

        Proxy proxy = new Proxy(schoolGirl);
        proxy.GiveOther();
        proxy.GiveFlower();
        proxy.GiveChoco();
    }

5,关于代理模式的思考

应用的场景

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

代理是在访问对象的时候,具有一定的间接性,代理其实就是真实对象的一种代表

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,242评论 6 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,082评论 19 139
  • 目录 本文的结构如下: 引言 什么是代理模式 模式的结构 典型代码 代理模式分类 代码示例 代理模式和装饰者模式的...
    w1992wishes阅读 1,597评论 0 13
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,802评论 18 399
  • (一) “你一定在开玩笑,”“明天迎亲队伍该到了……”“好,我明白了。”“今晚是我们最后一次见面。” 我一把拉住田...
    一只眼睛做梦阅读 269评论 8 1