觀察者模式(訂閱發佈者模式)

首先先說說訂閱發佈者模式,顧名思義,就是有訂閱者和發佈者,兩者的功能,訂閱是請求在某些事件(event)到達時可以通知它並執行對應的動作(action),而發佈則相對的是向訂閱告知事件(event)已經到達,你可以執行對應的動作(action)了。但是具體是怎麼的一個思維呢,聽我娓娓道來。
  大家應該都知道nodeJs是由事件來驅動的,也就是每個函數可以說都是某個事件來觸發的,這個函數只處理這個事件對應的邏輯,函數間的通信,都是通過事件監聽來驅動。玩過遊戲的人都知道,一般遊戲都有一個發佈消息的地方,比如我把某個怪乾死之後,要對隊友們說:“看,我把怪乾死了,你可以過來了”,這個其實就是一個訂閱發佈者模式。首先,我是發佈者,而隊友就是訂閱者,我把怪乾死(這是我自己這個函數處理的邏輯),往消息框輸入消息(這就是發佈),隊友們通過消息存放的地方(相當於訂閱)獲得數據,再幹他們該乾的事情(其他函數處理的邏輯)。懂了吧,其實說白了就是我和隊友之間夾雜着的消息存放的地方(Listener)就是訂閱發佈者主要存在的地方。
  接着我們來看一下這個消息存在的地方要實現什麼。第一,肯定是要把訂閱者想知道什麼消息類型,也就是event,以及要執行的動作保存起來,爲什麼要把動作也放進來呢,明明動作是由訂閱者執行的,這就是實際思維和編程思維的不同(容我裝下逼),按照編程思維,訂閱者執行的動作是個函數,而這個函數什麼時候執行完全由消息說了算,所以當然只能由Listener來執行。
  咳咳,如果以上覺得太複雜的話,我再總結一句話:訂閱者就是把要執行的函數和要的事件類型給消息存放的地方(Listener),而發佈者就是告訴消息存放的地方(Listener)你現在可以執行這個事件類型對應的函數了,並且把我給你的數據也傳進去。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章