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

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

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

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

等等。。。。。

用代码如何实现呢?

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();

运行结果:

posted on 2016-07-20 08:37  梦回过去  阅读(208)  评论(0编辑  收藏  举报