最簡單的通知方式 - 觀察者模式

weixin_34321977發表於2018-09-01

只需要語言支援以下功能:字典,陣列,單例

結構

NotificationCenter 這裡簡稱nc
nc的單例簡稱為nc.one()

資訊傳送

nc.one().post(事件名,傳遞引數)

資訊接收

nc.one().add(事件名,事件函式)

2068504-4cf7e66a1feb9a5c.png

如果傳送事件,則需要先新增事件偵聽,因為觀察者模式耦合性低,所以即便不新增觀察,事件也是可以傳送,只是沒有物件接收它而已。觀察者最重要的一環是必須在物件銷燬前將物件的所有觀察全部移除,否則會導致錯誤,甚至崩潰。

nc內部需要一個核心的字典類 --- dic[事件名,觀察者陣列]
新增觀察時,新增到觀察者陣列中。
傳送事件時,傳送遍歷觀察者陣列。
移除觀察時,移除dic中所有事件中所有陣列查詢對應的觀察者。

這裡需要注意的幾點(效率不高,但效率讓給了傳遞事件):

  • 新增觀察時需要排除重複新增
  • 移除觀察時需要遍歷所有位置

相關文章