接觸過委託和事件的人都知道,它們的語法都很簡單,真正的難點是在什麼場景中利用它們的特性來使用它。下面我希望通過我分析下面的這個案例可以讀者有一些啟發。有錯誤的地方還望指出,一起進步,謝謝!
假設你在一天的某個心情好的時刻會玩王者榮耀,你的5個寢室友(a,b,c,d,e…)將在一起打賭,如果你贏了,5個寢室友悄悄各幫你寫一門作業,如果你輸了你的室友會對你發出嘲諷。
有些同學可能會覺得這個題目很簡單,不就是if判斷嗎。
if(心情好,在玩遊戲)
if(輸)
}然而,真的這麼簡單嗎?首先你怎麼知道你的心情在一天的哪個時刻好,而且剛好在那個時刻想玩遊戲,並且你的室友知道你在玩遊戲, 換句話來所我們不知道在**插入這段**。難道你的室友一直用while迴圈做上面的判斷,顯然這不合適,因為你的室友要吃飯睡覺等,而且如果有更多的人參與這個打賭,每個人都有自己相應的方法,那麼我們的程式將需要不斷的進行擴充套件,而我們的委託和事件其中乙個功能就是解決上述情況。
首先定義乙個myself類表示你自己。裡面有乙個方法表示你在玩遊戲,還有兩個事件,乙個是玩遊戲贏了的事件,乙個是玩遊戲輸了的事件。
class
myself
else
}}
然後你在定義乙個other類表示你室友,裡面有一些他的基本資訊,比如名字name,還有打賭輸了之後要幫你寫的課程名couse,以及打賭輸了要做的事情caofen()和打賭贏了要做的事情writehomework()。還有這個物件例項的時候我們還要傳入他需要觀察的物件myself,以便他可以訂閱被觀察者(我)相應的事件。也就是這兩行**:
myself.winother += writehomework;myself.failother += caofen;
class
other
public
void
writehomework()
public
void
caofen()
}
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace 委託的應用場景
}}
Redis 簡介和應用場景
redis全稱remote dictionary server 遠端資料服務 是乙個nosql資料庫,基於記憶體的分布式key value儲存系統。redis的併發數取決於網路頻寬,讀取速度可高達110000次 s,寫速度高達81000次。redis支援的資料型別有9種。binary safe st...
Zookeeper的簡介和應用場景
zookeeper是乙個分布式協調服務 就是為使用者的分布式應用程式提供協調服務 a zookeeper是為別的分布式程式服務的 b zookeeper本身就是乙個分布式程式 只要有半數以上節點存活,zk就能正常服務,所以一般zk都是奇數臺伺服器 c zookeeper所提供的服務涵蓋 主從協調 伺...
Memcached和Redis應用場景的考慮
用的是redis做cache為什麼沒有用memcached,這裡有什麼考究嗎?另外,為什麼redis做快取卻又將資料放到mongodb去了?1 通訊方式 memcached和redis都支援udp協議。而且當使用者程序和memcached和redis在同一機器時,還可以使用unix域套接字通訊 1 ...