大话设计模式,让你的代码更完美3---代理模式

来源:互联网 发布:虚拟打印机软件 编辑:程序博客网 时间:2024/06/05 06:16

需求:使用代理模式,让你代理张三给妹纸送鲜花。

创建一个送礼物的接口:

 //送礼物    interface GiveGift    {        void GiveDolls();        void GiveFlowers();        void GiveChocolate();    }

实现送礼物接口,创建代理类(本人):

    class Proxy : GiveGift    {        Pursuit gg;        public Proxy(SchoolGirl mm)        {            gg = new Pursuit(mm);        }        public void GiveDolls()        {            gg.GiveDolls();        }        public void GiveFlowers()        {            gg.GiveFlowers();        }        public void GiveChocolate()        {            gg.GiveChocolate();        }    }
创建追求者张三:
    class Pursuit : GiveGift    {        SchoolGirl mm;        public Pursuit(SchoolGirl mm)        {            this.mm = mm;        }        public void GiveDolls()        {            Console.WriteLine(mm.Name + " 送你洋娃娃");        }        public void GiveFlowers()        {            Console.WriteLine(mm.Name + " 送你鲜花");        }        public void GiveChocolate()        {            Console.WriteLine(mm.Name + " 送你巧克力");        }    }
创建女神:
    class SchoolGirl    {        private string name;        public string Name        {            get { return name; }            set { name = value; }        }    }
主函数:
 static void Main(string[] args)        {            SchoolGirl jiaojiao = new SchoolGirl();            jiaojiao.Name = "李娇娇";            Proxy daili = new Proxy(jiaojiao);            daili.GiveDolls();            daili.GiveFlowers();            daili.GiveChocolate();            Console.Read();        }

接口:中定义了送礼物的方法,接口需要代理人和被代理人实现,代理人和被代理人不实现这些方法怎么送花?

代理类:代理类一定和被代理、女神间存在联系,如果代理类对两者都不认识,那还怎么玩?

所以代理类必须实现送礼物接口,其次是获取到女神对象,然后对追求者的送花。

献殷勤等进行封装,封装的目的就是经过一层,让追求者和女神不直接搭讪,必须通过你。

追求者:追求者要认识女神,不认识女神还怎么玩???......

追求者也要实现送礼物接口,不然没法给女神送礼物,其次是也要能获取到女神对象。


上述代码中:

首先创建了一个女神,然后创建代理类和爱慕者类。

女神是一个普通的类,代理类中则需要有个爱慕者对象,该代理类会将爱慕者的一些操作进行封装,进而让女神不知道是爱慕者送的鲜花。

但实际上真正的操作还是爱慕者,只是进行了一次封装,例如送鲜花等等


代理方法经常使用,例如接口的转换,常用的属性封装get/set等等。。。。

代理模式结构图


机结构图如上,代理类比较简单不再阐述。



0 0
原创粉丝点击