Re: [问题] 关于取代polling的问题

楼主: StupidGaGa (笨嘎嘎)   2015-02-06 11:21:38
※ 引述《ching99 (只要食物不要胖)》之铭言:
: 我用生活化的假设好了
: 假如我有两个class 一个是 "妈妈炒菜"
: 一个是"儿子看电视" 然后有一支电话
: 情境是这样 妈妈知道外婆会打电话来
: 所以一边炒菜一边不停的去询问儿子说"电话来了没"
: 然后直到儿子接到电话然后
: 确认是外婆而不是隔壁老王才通知妈妈说
: "妈~外婆的电话"
: 这是一般polling的机制
: 但是 我想要这个儿子主动点
: 外婆打过来就直接通知妈妈而不是妈妈去问儿子
: 请问我要用什么方法?
: public void MomCook()
: {
: answerPhone();
: }
: bool answerPhone()
: {
: if( GrandMon())
: return true;
: return false;
: }
你的class跟你的叙述不合,两种方式让你自己选
一、正常用法
1. mother class
public void Mother()
{
public void Cook()
{
Console.WriteLine("妈妈煮菜");
}
public void SayHello()
{
Console.WriteLine("妈妈:Hello");
}
}
2. son class
public void Son()
{
public event EventHandler GotPhoneCall;
public void WatchTV()
{
Console.WriteLien("儿子看电视");
}
public void GetPhoneCall()
{
Console.WriteLine("儿子接到电话");
if (this.GotPhoneCall != null)
{
this.GotPhoneCall(this, null);
}
}
}
3. phone class
public void Phone()
{
event EventHandler Rang;
public void Ring()
{
Console.WriteLine("电话响了");
if(this.Rang != null)
{
this.Rang(this, null);
}
}
}
4. client
Phone phone = new Phone();
Son son = new Son();
Mother mother = new Mother();
phone.Rang += new EventHandler((s, e) => son.GetPhoneCall());
son.GotPhoneCall += new EventHandler((s, e) => mother.SayHello());
phone.Ring();
二、
懒得打了,我用说的,
将电话的事件注册到儿子建构式,
将儿子事件注册到妈妈建构式,
呼叫就直接这样写
Mother mother = new Mother();
mother.son.phone.Ring();
效果一样,但是意义不一样,
要注意这点,
然后接下来应该就会有人找碴说我误导新手,
所以第二段不打了,可以当作练习自己打出来看看。
作者: ching99 (只要食物不要胖)   2015-02-26 12:14:00
谢谢大大

Links booklink

Contact Us: admin [ a t ] ucptt.com