|
緊耦合
從前,在南方一塊奇異的土地上,有個(gè)工人名叫彼得,他非常勤奮,對(duì)他的老板總是百依百順。但是他的老板是個(gè)吝嗇的人,從不信任別人,堅(jiān)決要求隨時(shí)知道彼得的工作進(jìn)度,以防止他偷懶。但是彼得又不想讓老板呆在他的辦公室里站在背后盯著他,于是就對(duì)老板做出承諾:無(wú)論何時(shí),只要我的工作取得了一點(diǎn)進(jìn)展我都會(huì)及時(shí)讓你知道。彼得通過(guò)周期性地使用“帶類型的引用”(原文為:“typed reference” 也就是delegate??)“回調(diào)”他的老板來(lái)實(shí)現(xiàn)他的承諾,如下:
class Worker
{
public void Advise(Boss boss) { _boss = boss; }
public void DoWork()
{
Console.WriteLine(“工作: 工作開始”);
if( _boss != null ) _boss.WorkStarted();
Console.WriteLine(“工作: 工作進(jìn)行中”);
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(“時(shí)間差不多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技術(shù):一個(gè).NET委托的故事:彼得,老板和宇宙,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。