委託和事件的應用場景

2021-10-13 09:24:49 字數 1250 閱讀 3860

接觸過委託和事件的人都知道,它們的語法都很簡單,真正的難點是在什麼場景中利用它們的特性來使用它。下面我希望通過我分析下面的這個案例可以讀者有一些啟發。有錯誤的地方還望指出,一起進步,謝謝!

假設你在一天的某個心情好的時刻會玩王者榮耀,你的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 ...