最简单的通知方式 - 观察者模式

只需要语言支持以下功能:字典,数组,单例

结构

NotificationCenter 这里简称nc
nc的单例简称为nc.one()

信息传送

nc.one().post(事件名,传递参数)

信息接收

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

最简单的通知方式 - 观察者模式_第1张图片

如果发送事件,则需要先添加事件侦听,因为观察者模式耦合性低,所以即便不添加观察,事件也是可以发送,只是没有对象接收它而已。观察者最重要的一环是必须在对象销毁前将对象的所有观察全部移除,否则会导致错误,甚至崩溃。

nc内部需要一个核心的字典类 --- dic[事件名,观察者数组]
添加观察时,添加到观察者数组中。
发送事件时,发送遍历观察者数组。
移除观察时,移除dic中所有事件中所有数组查找对应的观察者。

这里需要注意的几点(效率不高,但效率让给了传递事件):

  • 添加观察时需要排除重复添加
  • 移除观察时需要遍历所有位置

你可能感兴趣的:(最简单的通知方式 - 观察者模式)