進擊的訂閱模式

2022-02-01 14:37:54 字數 945 閱讀 1914

1.需求

草原上有 a、b 兩隻動物,有乙隻飢腸轆轆的獅子來到了草原上。

如果獅子發現了 a,那 a 就要趕緊跑,b 可以繼續貓著;如果獅子發現了 b,那 b 就要跑路,a 可以貓著;

如果獅子把 a、b 都看到了,那 a、b 都得跑,誰知道獅子中意追哪個呢;如果獅子誰都沒看見,那 a、b 都貓著。

2.實踐

如果用傳統if、else的話,業務加個c動物,那麼獅子就要重新考慮,效率低、拓展性低。改用 委託+事件 完成對 獅子的訂閱事件。

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

發布_訂閱者模式

}public

delegate

void findeventhandler(string

animals);

public

class

獅子

", animals);

if (findevent != null

) }}

public

class

a

void a_findevent(string

animals)

}public

void

run()

}public

class

b

void b_findevent(string

animals)

}public

void

run()

}}

進擊的觀察者模式

talk is cheap.show me the code.譯 屁話少說,放碼過來 以下所有 參見design pattern transformation.商品的資訊 折扣 const data 顧客資訊 是否為會員 購買數量 總消費 購買時間戳 const customer 總消費計算方式 t...

C 訂閱模式

首先在metronome 定義 delegate tickhandler,以及觸發tick 在listener 中 定義需要再metronome中呼叫函式 以及 關聯到 metronome.tickerhandler public class metronome public class liste...

發布 訂閱模式

發布 訂閱模式又叫觀察者模式,它定義物件間的一種一對多的關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都將得到通知。在js中,我們一般用事件模型來替代傳統的發布 訂閱模式。實現 varpubsub function p 訂閱 p.subscribe function flag,fn 發布 p....