一个面试的问题,请高手帮助解答下
设计一个程序,有一只猫,当它叫时所有的老鼠都逃跑,主人被惊醒.要求:
要考:虑到可扩展性,猫叫时产生的其他连锁反映.
用C#解决此问题 --------------------编程问答-------------------- 定义委托事件,猫叫的时候调用委托,激发事件,在各个老鼠的程序中都添加个响应的事件,在事件方法中写具体内容。 --------------------编程问答-------------------- 虽然考的是Delegate 但这种方式出题实再让人无语。 --------------------编程问答-------------------- 这个问题真让人汗颜 --------------------编程问答-------------------- 一般面试或者考试卷,十有易做图会考Delegate --------------------编程问答--------------------
说的是,再说这个问题面试也太多了吧,,,,问下他就不能换个问题..?? --------------------编程问答-------------------- 写了个大概的例子
using System;
class 例子
{
static void Main(string[] args)
{
Cat c = new Cat();
Owner o = new Owner();
Rat r = new Rat();
c.Handler += new CatShoutingEventHandler(o.OnCatShouting);
c.Handler += new CatShoutingEventHandler(r.OnCatShouting);
c.Shout();
Console.Read();
}
}
public delegate void CatShoutingEventHandler();
class Cat
{
public CatShoutingEventHandler Handler;
public void Shout()
{
Handler();
}
}
class Owner
{
public void OnCatShouting()
{
Console.WriteLine("死猫不要叫了");
}
}
class Rat
{
public void OnCatShouting()
{
Console.WriteLine("猫来了,我3");
}
} --------------------编程问答-------------------- 搜索一下,网上大把的。 --------------------编程问答-------------------- 这个问题有意思,^_^
说说我第想到的第一个思路,定义一个接口,里面一个方法,对应于猫叫的时候 ,
定义多个对象(老鼠,人,etc...),都完成那个接口
然后在猫这个对象上添加受影响的对象,最后猫叫的时候更新各个对象的状态...
猫相当于观察者,呵呵~~
--------------------编程问答-------------------- ....我理解错了 以为是一个名为猫的程序打开后 关闭所有鼠程序 然后打开主人程序 --------------------编程问答-------------------- namespace test
{
public delegate void Call();
public class cat
{
public event Call OnCall;
public Cat()
{
Console.Write("Cat Call.....");
}
public void virtual Call()
{
if(OnCall;!=null)
{
this.OnCall;();
}
}
}
public class Master
{
public Master(Cat cat)
{
cat.OnCall +=new Call(Master_WakeUp);
}
public void Master_WakeUp()
{
Consloe.Write("Master WakeUp....");
}
}
public class Mouse
{
public Mouse(Cat cat)
{
cat.OnCall +=new Call(Mouse_Run);
}
public void Mouse_Run()
{
Console.Write("Mouse Run...");
}
}
} --------------------编程问答-------------------- 晕死,公司笔试能不能有点新鲜的东西靠............................
补充:.NET技术 , C#