观察者模式(订阅发布者模式)

首先先说说订阅发布者模式,顾名思义,就是有订阅者和发布者,两者的功能,订阅是请求在某些事件(event)到达时可以通知它并执行对应的动作(action),而发布则相对的是向订阅告知事件(event)已经到达,你可以执行对应的动作(action)了。但是具体是怎么的一个思维呢,听我娓娓道来。
  大家应该都知道nodeJs是由事件来驱动的,也就是每个函数可以说都是某个事件来触发的,这个函数只处理这个事件对应的逻辑,函数间的通信,都是通过事件监听来驱动。玩过游戏的人都知道,一般游戏都有一个发布消息的地方,比如我把某个怪干死之后,要对队友们说:“看,我把怪干死了,你可以过来了”,这个其实就是一个订阅发布者模式。首先,我是发布者,而队友就是订阅者,我把怪干死(这是我自己这个函数处理的逻辑),往消息框输入消息(这就是发布),队友们通过消息存放的地方(相当于订阅)获得数据,再干他们该干的事情(其他函数处理的逻辑)。懂了吧,其实说白了就是我和队友之间夹杂着的消息存放的地方(Listener)就是订阅发布者主要存在的地方。
  接着我们来看一下这个消息存在的地方要实现什么。第一,肯定是要把订阅者想知道什么消息类型,也就是event,以及要执行的动作保存起来,为什么要把动作也放进来呢,明明动作是由订阅者执行的,这就是实际思维和编程思维的不同(容我装下逼),按照编程思维,订阅者执行的动作是个函数,而这个函数什么时候执行完全由消息说了算,所以当然只能由Listener来执行。
  咳咳,如果以上觉得太复杂的话,我再总结一句话:订阅者就是把要执行的函数和要的事件类型给消息存放的地方(Listener),而发布者就是告诉消息存放的地方(Listener)你现在可以执行这个事件类型对应的函数了,并且把我给你的数据也传进去。

猜你喜欢

转载自blog.csdn.net/qq_35145061/article/details/80909689