本例子来源于一高人博客。并对情节做了相应改造,现丑了。
在某软件公司,有个程序员[Worker],经理[Manager]还有老板[Boss],程序员工作得十分努力,
但老板对经理说:"虽然你们部门工作突出,有个好的程序员,但是你必须给我好好监督他,而我呢负责监督你的工作"
于是:
1.经理:我不想监督他,让程序员主动汇报自己的工作,我对老板也是一样,采取主动汇报自己的工作,
但老板必须告诉我电话等联系方式,我要随时汇报程序员工作进度。
2.程序员也对经理说:告诉我电话或联系方式吧,我主动汇报给您。于是出现了:接口监听事件。
1.面向接口的监听事件。[Demo1]
IStakeout:监视者;Worker:程序员;Boss:老板;Manager:经理。
经理和老板必须实现接口IStakeout,而Worker,Manager,Boss都可设置自己被监视的对象。
这样:Worker在项目中分阶段报告Manager,而Manager接到消息也马上汇报Boss。
但Boss说:"烦啊,什么事都给我汇报,我只关心项目结果啊,不要在开始就来烦我,我没时间今天得
陪自己的小秘出去逛逛呢。"。Manager为了不打扰Boss的雅兴,于是想出了比较高的方式[Demo2]
2.面向委托的监听事件。[Demo2]
Manager:没问题,如果你想监督我就汇报工作,如果不想监督的话,我就不汇报好了,不过Worker的汇报方式也得和我一样。
在Worker和Manager中设置委托,提供给外部来定制调用。
这样他们三工作配合还算不错。但:Boss说:是啊我想监视就监视,但我一旦监视上就没完没了,没办法取消。
于是:经理想到了[Demo3]
3.事件驱动监听。[Demo3]
于是出事件驱动监听:
让Boss可以用+=和-=的方式来实现他的想法和创意。
于是Boss觉得日子不错,工作顺利,跟小秘也很浪漫。
直到有一天:老板的小秘的事被老板娘知道了,大吵一架,Boss和他的小秘散了。
于是Boss有了充足的时间对Manager说:为什么你在监督Worker的同时我就不可以监视了啊,现在我也得监视Worker的工作进度(小心眼的老板)
Manager知道以前的工作方式不行了,得改革。[Demo4]
4.事件轮询监听。[Demo4]
Worker每次汇报工作的时候都在事件列表里面找一遍,把找到的都汇报一次。
项目完成了:Boss很开心,Manager也觉得工作顺利。这时:Boss开始为Manager,Worker发项目金了。
但:Boss发奖金总是一拖再拖,Worker的项目总是一个接一个地做,Worker不可能等到Boss把上次奖金
发了在继续做下去吧,Worker知道Boss就这德性,于是Worker想到了办法,暂时忘记以前的项目奖金吧
继续开始做其他的项目。[Demo5]
5.事件异步轮询监听。[Demo5]
在Worker汇报项目结束时,就设计好了,我汇报完成就继续做新的项目,至于项目奖什么时发下来就不必
管了,总有一天会发下来的。
6.尾声。
Worker工作得很努力,工资很低,项目奖每次都很少,于是Worker在上个月辞职去摆起了烧烤摊。