维基百科:
在许多发布/订阅系统中,发布者发布消息到一个中间的消息代理,然后订阅者向该消息代理注册订阅,由消息代理来进行过滤。消息代理通常执行存储转发的功能将消息从发布者发送到订阅者。
与观察者模式的区别:
1.发布者与订阅者无法相互感知,双方无法知道对方是谁.
2,非实时传递信息,信息可以储存到一定时间再传递到订阅者.
3,发布订阅模式常用于不同的交互模块.比如消息队列.
4,接收者可能会接收到不同类别的消息.可以自定义接收信息.而观察者模式一旦有状态变化,则所有的观察者都要接收.观察不是一种主动的观察而是一种被动地接收通知
初级代码理解形式,可能有误,后续修改.
以蜂巢为例
# encoding: utf-8
class PostMan(object):
def __init__(self, name, hive_box):
self.name = name
self.hive_box = hive_box
def publish(self, msg):
self.hive_box.notify(msg)
class Subscriber(object):
def __init__(self, name, hive_box):
self.name = n