首页 > 其他 > 详细

观察者模式

时间:2016-07-20 09:02:16      阅读:141      评论:0      收藏:0      [点我收藏+]

观察者模式就是一个事物的发生、同时会导致另一个事物的发生,这两个事物之间的联系用程序来做。就是观察者模式。

例如:群里发了一个红包,这个事件就导致群员之间都在抢。

突然下了大雨,人们都打开雨伞。

电话突然响起,就有人接听

等等。。。。。

用代码如何实现呢?

1、事件的创造者

2、观察者

代码:

事件的创造者:

    public class Baby
    {

        public Baby(string name)
        {
            BabyName = name;
        }

        private string BabyName;

        public event Action<string> BabyCry;

        //  public event Action BabyCry;

        public void Cry()
        {

            Console.WriteLine("{0}、小朋友哭了", BabyName);

            if (BabyCry != null)
                BabyCry(BabyName);
        }
    }

 

观察者:

    public class Grandma
    {
        public void Coax(string name)
        {
            Console.WriteLine("{0},Coax,{1}", GetType(), name);
        }
    }

    public class Grandpa
    {
        public void See(string name)
        {
            Console.WriteLine("{0},See,{1}", GetType(), name);
        }
    }

    public class Mother
    {
        public void hold(string name)
        {
            Console.WriteLine("{0},hold,{1}", GetType(), name);
        }
    }

    public class Father
    {
        public void ask(string name)
        {
            Console.WriteLine("{0},ask,{1}", GetType(), name);
        }
    }

使用:

            Baby baby = new Baby("小苹果");
            baby.BabyCry += new Father().ask;
            baby.BabyCry += new Mother().hold;

            baby.BabyCry += new Grandpa().See;


            Grandma grandma = new Grandma();

            baby.BabyCry += grandma.Coax;

            baby.Cry();

            Console.WriteLine("--------------------------------------");

            ////去掉一个
            baby.BabyCry -= grandma.Coax;

            baby.Cry();

            Console.ReadLine();

运行结果:

技术分享

观察者模式

原文:http://www.cnblogs.com/lystory/p/5686959.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!