1.需求
草原上有 a、b 兩隻動物,有乙隻飢腸轆轆的獅子來到了草原上。
如果獅子發現了 a,那 a 就要趕緊跑,b 可以繼續貓著;如果獅子發現了 b,那 b 就要跑路,a 可以貓著;
如果獅子把 a、b 都看到了,那 a、b 都得跑,誰知道獅子中意追哪個呢;如果獅子誰都沒看見,那 a、b 都貓著。
2.實踐
如果用傳統if、else的話,業務加個c動物,那麼獅子就要重新考慮,效率低、拓展性低。改用 委託+事件 完成對 獅子的訂閱事件。
usingsystem;
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....