您的位置:首页 > 其它

关于一道题目的讨论

2012-03-26 18:06 218 查看
题目如下:

程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)

要求:

1.要有联动性,老鼠和主人的行为是被动的。

2.考虑可扩展性,猫的叫声可能引起其他联动效应。

实现方法一:

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CatSound
{
interface IAlarmed
{
void Alarmed();
}

class Cat
{
public List<IAlarmed> AlarmedThings;

public Cat()
{
this.AlarmedThings = new List<IAlarmed>();
}

public void Sound()
{
Console.WriteLine("猫叫了.");
foreach (IAlarmed item in this.AlarmedThings)
{
item.Alarmed();
}
}
}

class Master : IAlarmed
{
public void Wake()
{
Console.WriteLine("主人被惊醒!");
}

public void Alarmed()
{
this.Wake();
}
}

class Mouse : IAlarmed
{
public Mouse(string name)
{
this.Name = name;
}
public string Name { get; set; }

public void Run()
{
Console.WriteLine(string.Format("{0} 跑掉了.", this.Name));
}

public void Alarmed()
{
this.Run();
}
}

class Program
{
static void Main(string[] args)
{
Cat cat = new Cat();
cat.AlarmedThings.Add(new Mouse("老鼠A"));
cat.AlarmedThings.Add(new Mouse("老鼠B"));
cat.AlarmedThings.Add(new Mouse("老鼠C"));
cat.AlarmedThings.Add(new Master());

cat.Sound();
Console.Read();

}
}
}


第一种方法用了事件,第二种方法用了接口, 哪种方法更好, 或者有什么其它更好的方法,希望大家指点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: