一道面试题
面试
今天遇到一道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()方法
总结
归结自己学的不扎实,还需要更多的实践练习,提升空间很大!!!

浙公网安备 33010602011771号