C# 观察者模式:一只神奇的猫

一、观察者模式,由一只猫发起一个事件。然后影响多个不同的对象(观察者)发生不同的动作反应。

包括:老鼠会跑(Mouse--Run)、狗会叫(Dog--Wang)、小偷会躲起来(Stealer--Hide)、婴儿会哭(Baby--Cry)、妈妈会说话(Mother--Whisper)等等。。。

二、新建控制台程序,建立这只神奇的猫和多个观察者对象类;

神奇猫(Cat)类

public class Cat
{
     public event Action MiaoHandler;//定义一个委托事件
        public void MiaoEvent()
        {
            Console.WriteLine("{0} MiaoEvent.....", this.GetType().Name);
            if (this.MiaoHandler != null)
            {
                foreach (Action observer in this.MiaoHandler.GetInvocationList())
                {
                    observer.Invoke();
                }
            }
        }
}

老鼠(Mouse)类

 public class Mouse 
    {
        public void Run()
        {
            Console.WriteLine("{0} Run", this.GetType().Name);
        }
    }

狗(Dog)类

public class Dog 
    {
        public void Wang()
        {
            Console.WriteLine("{0} Wang", this.GetType().Name);
        }
    }

小偷(Stealer)类

 public class Stealer 
    {
        public void Hide()
        {
            Console.WriteLine("{0} Hide", this.GetType().Name);
        }
    }

婴儿(Baby)类

public class Baby 
    {
        public void Cry()
        {
            Console.WriteLine("{0} Cry", this.GetType().Name);
        }
    }

妈妈(Mother)类

 public class Mother 
    {
        public void Whisper()
        {
            Console.WriteLine("{0} Whisper", this.GetType().Name);
        }
    }

三、上面各个类建立完成之后,程序主入口调用。

class Program
{
     static void Main(string[] args)
     {
        try
         {
            Console.WriteLine("*******************观察者模式事件委托实现*******************");

                    Cat cat = new Cat();
                    cat.MiaoHandler += new Mouse().Run;
                    cat.MiaoHandler += new Baby().Cry;
                    cat.MiaoHandler += new Dog().Wang;
                    cat.MiaoHandler += new Mother().Whisper;
                    cat.MiaoHandler += new Stealer().Hide;
                    cat.MiaoEvent();
         }
           catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.Read();
     }
}

C# 观察者模式:一只神奇的猫_第1张图片

理解的不是很到位,大家有什么意见可以评论。。。。谢谢大家

你可能感兴趣的:(C# 观察者模式:一只神奇的猫)