好多人一直在問:什麼時候該用委托,為什麼要用委托,委托有什麼好處....
看完下面的文章你将茅塞頓開..(看不懂的直接TDDTDS)
概念雖然我不喜歡講太多
我們直接先來YY 個場景:我很喜歡打遊戲,但運氣不好每次打遊戲都會被主管看到,朱老闆不喜歡他的員工在上班的時
間打遊戲,是以朱老闆就跟主管說:以後員工在打遊戲,你就扣他20塊錢.
這其實就是一個委托,朱老闆委托主管一旦發現員工打遊戲,就做一件事情.
程式該怎麼寫呢?
至少有2個類吧,主管與員工,主管有個方法扣錢,員工有個方法玩遊戲,那麼開始動工了
員工類:
主管類:
MIan方法大概這麼寫就行了:
運作,果然結果是對的,看來做為程式員我還是比較低調的..寫出來結果很正常,也不沾沾自喜..
員工:開始玩遊戲了..
員工:CS真好玩,哈哈哈! 我玩...
主管:上班時間膽敢玩遊戲
主管:看看你小子有多少薪水:8000
主管:我開始扣薪水...
主管:扣好了.
主管:看看你小子薪水剩餘:7980
下面我們簡單的分析下這個程式:
1:在建立主管類之後才能建立員工類,耦合性太高,也就是說你要建立個員工,必須要先建立個主管..
2:如果場景發生以下變化,我要讓經理代替主管,我們不得不修改員工類,并增加經理類.
這樣看來這段程式設計的并不好,我們不妨來考慮下事件(特殊的委托)來實作
必須要定義一個委托,就是讓主管監視員工,然後員工類裡要有個事件(員工也是激發該事件的對象),主管執行事件
主管類就要實作一個方法,這個方法與委托的傳回直一樣,參數一樣就行了,給委托來調用的.:
那麼調用就變的簡單了
輸出:
2180
2160
總結:
當然,不使用委托和事件我們仍然可以設計出解耦的類,然而卻會增加很多的類、接口以及關聯等等,增加了代碼量和程式的邏輯複雜性,而在.net裡利用委托和事件我們隻需少的多的代碼來實作。
學習交流群:364976091