• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

收集的C#面试大全--不断补充中

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

题目:猫叫,老鼠逃跑,主人惊醒。(10分)

要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象
评分标准: <1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)
2>从Mouse和Master中提取抽象(5分)
3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分)

using System; 
using System.Collections; 
 
namespace ConsoleApplication1 
{ 
 public interface Observer 
 { 
    void Response();//观察者的响应,如是老鼠见到猫的反映 
 } 
 public interface Subject
 { 
        void AimAt(Observer obs);//针对哪些观察者,这里指猫的要扑捉的对象---老鼠 
 } 
 
 
 public class Mouse : Observer 
 { 
private string name; 
public Mouse(string name, Subject subj) 
{
 this.name = name; 
 subj.AimAt(this); 
} 
 
public void Response() 
{ 
 Console.WriteLine(name + " attempt to escape!"); 
} 
 } 
 
 public class Master : Observer 
 { 
public Master(Subject subj) 
{
 subj.AimAt(this); 
} 
 
public void Response() 
{ 
 Console.WriteLine("Host waken!"); 
}
 } 
 
 
 public class Cat : Subject 
 { 
private ArrayList observers; 
public Cat() 
{
 this.observers = new ArrayList(); 
} 
public void AimAt(Observer obs) 
{ 
 this.observers.Add(obs); 
} 
public void Cry() 
{ 
 Console.WriteLine("Cat cryed!"); 
foreach (Observer obs in this.observers) 
{ 
obs.Response(); 
 } 
} 
 } 
 
 class MainClass 
 { 
/**//// <summary> 
/// 应用程序的主入口点。 
/// </summary> 
[STAThread] 
static void Main(string[] args) 
{ 
 Cat cat = new Cat(); 
 Mouse mouse1 = new Mouse("mouse1", cat); 
 Mouse mouse2 = new Mouse("mouse2", cat); 
 Master master = new Master(cat); 
 cat.Cry(); 
} 
 } 
} 

--------------------------------------------------------------------------------

设计方法二: 使用event -- delegate设计..

程序代码

using System; 
using System.Collections; 
 
 
namespace ConsoleApplication1 
{ 
 public delegate void SubEventHandler(); 
 public abstract class Subject 
 { 
public event SubEventHandler SubEvent; 
protected void FireAway() 
{ 
 if (this.SubEvent != null) 
this.SubEvent(); 
}
} 
 public class Cat : Subject 
 {
public void Cry() 
{ 
 Console.WriteLine("cat cryed."); 
 this.FireAway(); 
} 
 } 
 
 public abstract class Observer 
 { 
public Observer(Subject sub) 
{ 
 sub.SubEvent += new SubEventHandler(Response); 
} 
public abstract void Response();????
 } 
 public class Mouse : Observer 
 { 
private string name; 
public Mouse(string name, Subject sub) : base(sub) 
{ 
 this.name = name; 
} 
public override void Response() 
{ 
 Console.WriteLine(name + " attempt to escape!"); 
} 
 } 
 public class Master : Observer 
 { 
public Master(Subject sub) : base(sub){} 
public override void Response() 
{ 
 Console.WriteLine("host waken"); 
} 
 } 
 
 class MainClass 
 { 
/**//// <summary> 
/// 应用程序的主入口点。 
/// </summary> 
[STAThread] 
static void Main(string[] args) 
{ 
 Cat cat = new Cat(); 
 Mouse mouse1 = new Mouse("mouse1", cat); 
 Mouse mouse2 = new Mouse("mouse2", cat); 
 Master master = new Master(cat); 
 cat.Cry(); 
} 
 } 
} 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap