zoukankan      html  css  js  c++  java
  • .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("主人醒来");
            }
        }
    

      

  • 相关阅读:
    CRC在线计算器
    freemodbus-v1.5.0 源码分析
    图及其实现
    最短路径
    交换排序-------快速排序
    FreeRTOS--删除任务
    Install OE and BitBake
    高端编程之DOM
    timeout使用实例
    使用JS提交表单
  • 原文地址:https://www.cnblogs.com/kfx2007/p/2453285.html
Copyright © 2011-2022 走看看