bsp; boss = new Boss();
peter.Advise(boss); peter.DoWork(); Console.WriteLine(“Main: 工人工作完成”);
Console.ReadLine(); }}
接口
现在,彼得成了一个特殊的人,他不但能容忍吝啬的老板,而且和他周围的宇宙也有了密切的联系,以至于他认为宇宙对他的工作进度也感兴趣。不幸的是,他必须也给宇宙添加一个特殊的回调函数Advise来实现同时向他老板和宇宙报告工作进度。彼得想要把潜在的通知的列表和这些通知的实现方法分离开来,于是他决定把方法分离为一个接口:
interface IWorkerEvents { void WorkStarted(); void WorkProgressing(); int WorkCompleted();} class Worker { public void Advise(IWorkerEvents events) { _events = events; } public void DoWork() {Console.WriteLine(“工作: 工作开始”);
if( _events != null ) _events.WorkStarted(); Console.WriteLine(“工作: 工作进行中”);
if(_events != null ) _events.WorkProgressing(); Console.WriteLine("“工作: 工作完成”");
if(_events != null ) { int grade = _events.WorkCompleted(); Console.WriteLine(“工人的工作得分=” + grade);
}