對委託和事件的理解和抽象

2021-10-24 08:36:47 字數 1447 閱讀 9352

對委託和事件的理解和抽象

委託的理解:

現實生活中的:

委託,乙個物件讓另乙個物件,做乙個前者應該做的事(我委託你去幫我買瓶水)

程式中:

定義兩個概念(都是以物件形式存在)

應用:

對事件的理解:

現實生活中的:

事件就是乙個物件的乙個行為(某個人做了某件事),或者乙個人做了幾件事,這裡特指乙個物件乙個事件

程式中:

事件是乙個對事兒的集合,是乙個資料結構,裡面的資料型別是方法,是行為邏輯,而事件就是對這些方法進行增刪改查

具體應用:

委託的蒙版(屬性),委託是乙個或多個方法,只要是方法就可以傳入事件中

為物件建立的自身的行為邏輯記錄容器,當這個物件對自身執行了那些方法,都可以記錄到這個事件容器中

對於事件的另乙個理解:

當物件的乙個行為邏輯發生,另乙個物件需要做出行為

模式:訂閱者模式:報紙和讀者

一旦訂閱,那麼報紙機會一直給讀者傳遞新聞,

取消訂閱就相當於,讀者不需要委託報紙做這個事了

程式中:發布者和訂閱者

乙個訂閱過的發布者容器,並可以訂閱和取關發布者;

乙個規定訂閱發布者的委託(返回值和引數一致)

一 個可以一直執行的方法體,方法體中呼叫委託,以更新訂閱者的行為邏輯

訂閱和取關的方式就是:在訂閱者對應的委託中增刪對應的發布者物件的方法即可。

觀察者模式:我和外賣店(我餓了,要點外賣讓讓外賣店送餐)

生活中:

程式中:

還有乙個容器來儲存觀察者物件,以獲取通知方式

判斷:我需要判斷這個行為邏輯後是否要點餐,也就事件容器中的當前事件是否滿足傳送訊息的條件

傳送訊息:傳送訊息的方法是手機點餐,但是需要外賣點的****,也就是需要呼叫觀察者的通知方法

訂閱者和觀察者的區別:

被關注的物件(遊戲物體主角)是委託關係還是:

訂閱者模式中:是委託關係

發布者是我們關注操作的物件,他是被委託者,將訂閱者將自己的行為邏輯交給發布者物件操作;

觀察者模式中:不是委託關係

被觀察者是我們要操作的物件,他是直接新增和刪除觀察者,通過觀察者定義的通知方式通知觀察者,事件在其中的運用其實是基於將行為邏輯(方法)作為資料型別,存入事件資料結構中,是作為資訊而不是方法

2.事件和委託在其中的應用:

訂閱者模式:

正常的委託關係:將乙個物件中的行為邏輯(方法)給另乙個物件呼叫,委託傳遞的是方法

觀察者模式:

事件委託資料結構,儲存被觀察者物件的執行過的行為邏輯,並將事件作為資訊傳給觀察者

委託和事件的理解

委託 委託是乙個類,它定義了方法的型別,如同變數的型別 string name,delegate printname 只要方法的簽名與委託的簽名相同,就可以把乙個方法賦值給委託型別的方法。委託的用法 1 可以作為形參,將乙個方法傳遞給另乙個方法 2 可以定義委託型別的委託 就像定義乙個string型...

簡單理解委託和事件

什麼是委託?委託就是持有乙個或者多個方法的物件!並且該物件可以執行,可以傳遞。宣告委託型別?委託可以持有方法,那麼持有什麼樣的方法呢?可以宣告,它是一種引用型別。delegate void actcute 定義委託型別的物件?既然是種型別,就可以定義該型別的物件。actcute actcute 給委...

C 委託和事件的理解

委託 private delegate string getastring 委託的定義,使用delegate關鍵字 兩種指向方法的寫法 getastring a new getastring x.tostring a指向了x中的tostring方法 getastring a x.tostring 兩...