天天育儿网,内容丰富有趣,生活中的好帮手!
天天育儿网 > java猫大叫一声_猫大叫一声 所有的老鼠都开始逃跑 主人被惊醒 | 学步园

java猫大叫一声_猫大叫一声 所有的老鼠都开始逃跑 主人被惊醒 | 学步园

时间:2023-11-25 21:01:09

相关推荐

java猫大叫一声_猫大叫一声 所有的老鼠都开始逃跑 主人被惊醒 | 学步园

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

要求:

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

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

要点:1.联动效果,运行代码只要执行Cat.Cryed()方法。2.对老鼠和主人进行抽象

评分标准:<1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)

<2>从Mouse和Master中提取抽象(5分)

<3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分)

publicinterfaceObserver

{

voidResponse();//观察者的响应,如是老鼠见到猫的反映

}

publicinterfaceSubject

{

voidAimAt(Observerobs);//针对哪些观察者,这里指猫的要扑捉的对象---老鼠

}

publicclassMouse:Observer

{

privatestringname;

publicMouse(stringname,Subjectsubj)

{

this.name=name;

subj.AimAt(this);

}

publicvoidResponse()

{

Console.WriteLine(name+"attempttoescape!");

}

}

publicclassMaster:Observer

{

publicMaster(Subjectsubj)

{

subj.AimAt(this);

}

publicvoidResponse()

{

Console.WriteLine("Hostwaken!");

}

}

publicclassCat:Subject

{

privateArrayListobservers;

publicCat()

{

this.observers=newArrayList();

}

publicvoidAimAt(Observerobs)

{

this.observers.Add(obs);

}

publicvoidCry()

{

Console.WriteLine("Catcryed!");

foreach(Observerobsinthis.observers)

{

obs.Response();

}

}

}

classMainClass

{

staticvoidMain(string[]args)

{

Catcat=newCat();

Mousemouse1=newMouse("mouse1",cat);

Mousemouse2=newMouse("mouse2",cat);

Mastermaster=newMaster(cat);

cat.Cry();

}

}

//---------------------------------------------------------------------------------------------

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

publicdelegatevoidSubEventHandler();

publicabstractclassSubject

{

publiceventSubEventHandlerSubEvent;

protectedvoidFireAway()

{

if(this.SubEvent!=null)

this.SubEvent();

}

}

publicclassCat:Subject

{

publicvoidCry()

{

Console.WriteLine("catcryed.");

this.FireAway();

}

}

publicabstractclassObserver

{

publicObserver(Subjectsub)

{

sub.SubEvent+=newSubEventHandler(Response);

}

publicabstractvoidResponse();

}

publicclassMouse:Observer

{

privatestringname;

publicMouse(stringname,Subjectsub):base(sub)

{

this.name=name;

}

publicoverridevoidResponse()

{

Console.WriteLine(name+"attempttoescape!");

}

}

publicclassMaster:Observer

{

publicMaster(Subjectsub):base(sub){}

publicoverridevoidResponse()

{

Console.WriteLine("hostwaken");

}

}

classClass1

{

staticvoidMain(string[]args)

{

Catcat=newCat();

Mousemouse1=newMouse("mouse1",cat);

Mousemouse2=newMouse("mouse2",cat);

Mastermaster=newMaster(cat);

cat.Cry();

}

}

如果觉得《java猫大叫一声_猫大叫一声 所有的老鼠都开始逃跑 主人被惊醒 | 学步园》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。