一个.NET委托的故事:彼得,老板和宇宙

  紧耦合

  从前,在南方一块奇异的土地上,有个工人名叫彼得,他非常勤奋,对他的老板总是百依百顺。但是他的老板是个吝啬的人,从不信任别人,坚决要求随时知道彼得的工作进度,以防止他偷懒。但是彼得又不想让老板呆在他的办公室里站在背后盯着他,于是就对老板做出承诺:无论何时,只要我的工作取得了一点进展我都会及时让你知道。彼得通过周期性地使用“带类型的引用”(原文为:“typed reference” 也就是delegate??)“回调”他的老板来实现他的承诺,如下:

class Worker 
{
public void Advise(Boss boss) { _boss = boss; }
public void DoWork()
  {
  Console.WriteLine(“工作: 工作开始”);
  
if( _boss != null ) _boss.WorkStarted();
  Console.WriteLine(“工作: 工作进行中”);
  
if( _boss != null ) _boss.WorkProgressing();
  Console.WriteLine(
"“工作: 工作完成”");
  
if( _boss != null )
     {
    
int grade = _boss.WorkCompleted();
    Console.WriteLine(“工人的工作得分=”
+ grade);
    }
}
private Boss _boss;
}

class Boss
{
  public void WorkStarted() { }
  
public void WorkProgressing() { }
  
public int WorkCompleted()
{
    Console.WriteLine(“时间差不多1);
    
return 2;
}
}

class Universe
{
  
static void Main()
   {
    Worker peter
= new Worker();
    Boss boss
= new Boss();
    peter.Advise(boss);
    peter.DoWork();
    Console.WriteLine(“Main: 工人工作完成”);
    Console.ReadLine();
  }
}

NET技术一个.NET委托的故事:彼得,老板和宇宙,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。