Walden1024

导航

《大话设计模式》学习笔记4:代理模式

  

  

代追求者送礼物示例:

  

1.Subject:

    public interface IGiveGift
    {
        void GiveDolls();
        void GiveFlowers();
        void GiveChocolate();
    }

2.RealSubject:

    public class Pursuit:IGiveGift
    {
        SchoolGril girl;
        public Pursuit(SchoolGril girl)
        {
            this.girl = girl;
        }
        public void GiveDolls()
        {
            Console.WriteLine(girl.Name + ",送你洋娃娃");
        }

        public void GiveFlowers()
        {
            Console.WriteLine(girl.Name + ",送你鲜花");
        }

        public void GiveChocolate()
        {
            Console.WriteLine(girl.Name + ",送你巧克力");
        }
    }

3.Proxy:

    public class Proxy:IGiveGift
    {
        Pursuit pursuit;
        public Proxy(SchoolGril girl)
        {
            pursuit = new Pursuit(girl);
        }
        public void GiveDolls()
        {
            pursuit.GiveDolls();
        }

        public void GiveFlowers()
        {
            pursuit.GiveFlowers();
        }

        public void GiveChocolate()
        {
            pursuit.GiveChocolate();
        }
    }

4.其他类及客户端代码:

    public class SchoolGril
    {
        public string Name { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            SchoolGril girl = new SchoolGril();
            girl.Name = "美女";
            Proxy proxy = new Proxy(girl);
            proxy.GiveDolls();
            proxy.GiveFlowers();
            proxy.GiveChocolate();
        }
    }

 

代理模式的应用:

1.远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。如WebServie。

2.虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。

3.安全代理,用来控制真实对象访问时的权限。

4.智能指引,是指当调用真实的对象时,代理处理另外一些事情。

posted on 2015-05-08 15:38  Walden1024  阅读(325)  评论(0编辑  收藏  举报