关于一道题目的讨论
2012-03-26 18:06
281 查看
题目如下:
程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
要求:
1.要有联动性,老鼠和主人的行为是被动的。
2.考虑可扩展性,猫的叫声可能引起其他联动效应。
实现方法一:
View Code
第一种方法用了事件,第二种方法用了接口, 哪种方法更好, 或者有什么其它更好的方法,希望大家指点。
程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(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(); } } }
第一种方法用了事件,第二种方法用了接口, 哪种方法更好, 或者有什么其它更好的方法,希望大家指点。
相关文章推荐
- 网易2009年校园招聘--一道关于<list>的STL题目
- 关于腾讯面试的一道题目
- 20080306:上海华为的一道关于指针的编程题目
- 关于指针加减的一道题目
- 百度一道关于算法的面试题目
- 分享一道笔试题目--关于static和extern变量的问题
- 网易2009年校园招聘--一道关于<list>的STL题目
- 关于js字符串替换的一道笔试题目
- 关于栈的一道题目 (数据结构,我不相信我搞不定你!!!!!!!)
- 关于C++队列操作(并附上一道Boring题目)
- 《深入理解计算机系统》上的一道题目,关于位的。
- 冒着被大家唾骂的风险大胆置疑:UNP书中的一道关于主机序与网络序习题的答案?请进入热烈讨论?
- 一道关于逆序对的题目
- 一道经典的C++题,关于分钱的问题,适合新手阅读(黑客X档案论坛题目)
- 求解:关于fork的一道题目
- 关于一道cout题目
- 回答一道题目,关于T-SQL递归查询的
- java 一道关于String字符串操作题目
- 一道关于二维数组和指针数组的C语言笔试题目
- 一道关于集合分组并进行笛卡尔积的题目思路