.NET面试——老鼠、猫和主人(观察者模式) Kevin

面试题:猫叫了,所有老鼠开始逃跑,主人被惊醒 请用OO思想描述此过程

1.老鼠跟主人是被动的

2.考虑联动性与扩展性。

自己的代码:(参考大话设计模式——观察者模式——程杰)

 class Program
    {
        static void Main(string[] args)
        {
            Cat cat = new Cat();
            Mouse m1 = new Mouse("老鼠1");
            Mouse m2 = new Mouse("老鼠2");

            Master m = new Master();

            cat.update +=new EventHandler(m1.Run);
            cat.update+=new EventHandler(m2.Run);
            cat.update+= new EventHandler(m.WakeUp);


            cat.Crew();
            Console.Read();
            
            

        }
    }

    /// <summary>
    /// 通知者接口
    /// </summary>
    interface Subject
    {
        void notify();

        //string SubjectState { get; set; }
    }

    delegate void EventHandler();

    /// <summary>
    /// 猫类
    /// </summary>
    class Cat:Subject
    {
        public event EventHandler update; 
        public void Crew()
        {
            Console.WriteLine("猫开始大叫");
            notify();
        }

        public void notify()
        {
            update();
        }
    }

    /// <summary>
    /// 老鼠类
    /// </summary>
    class Mouse
    {
        public Mouse(string Name)
        {
            this.name = Name;
        }

        private string name{get;set;}


        public void Run()
        {
            Console.WriteLine(name+"开始逃跑");
        }
    }

    /// <summary>
    /// 主人类
    /// </summary>
    class Master
    {
        public void WakeUp()
        {
            Console.WriteLine("主人醒来");
        }
    }

  

原文地址:https://www.cnblogs.com/kfx2007/p/2453285.html