4,代理模式

1。定义

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

2,UML图

4,代理模式_第1张图片
代理模式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,智能索引,当调用真实的对象时,代理处理另外一些事

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

你可能感兴趣的:(4,代理模式)