一道面试题

面试

 今天遇到一道C#面试题,大概是以猫叫,老鼠跑,主人惊醒一系列动作结合C#面向对象模拟出来。

 我看到题的时候,我知道这设计了观察者模式。大致要用到事件,但是真正落实的代码时,我发现我动不了笔。晚上回来上网查了下,趁现在理解赶紧记录下。

 需要声明的类有实体对象类Subject,声明一个事件对象,在一个方法里执行这个事件,这是交给子类调用的方法,代码如下:

 public delegate void SubEventHandler();
  public  abstract class Subject
    {
      public event SubEventHandler SubEvent;
      protected void FireAway()
      {
          if (this.SubEvent != null)
              this.SubEvent();
      }
    }

 在创建Observer抽象类,在构造函数里面添加事件,并指向一个抽象方法的引用

 public abstract  class Observer
    {
       public Observer(Subject sub)
       {
           sub.SubEvent += new SubEventHandler(Response);

       }
       protected abstract void Response();
    }

 然后创建mao类,就一个叫唤的方法

 然后分别创建老鼠类和主人类,他们各自构造函数继承基类的构造函数,然后各自实现Respose()方法

 总结

   归结自己学的不扎实,还需要更多的实践练习,提升空间很大!!!

 

posted @ 2015-01-09 22:38  隔壁老王来了  阅读(145)  评论(0)    收藏  举报
本人小菜一枚,若有不周之处,还望指点,小弟不胜感激!!