记录下自己对观察者模式和发布订阅模式的理解,以及自己的一点思考。
- 首先两者都采用的是监听机制,即某件关注的事务发生变化时,就会通知对此感兴趣的一方去做相应的处理。
- 观察者模式在我看来更关注观察的对象,当对象发生改变,就会相应的通知对象中维护的那些监听者或者说依赖方去按照自己的方式处理改变了的对象信息,观察对象和观察者是一种强依赖的关系。感觉有点gossip girl的感觉,一举一动都活在公众的视野下,好没有隐私啊。
- 发布订阅模式在我看来更注重的是发布者,但是相比与观察者模式会多一层叫事件中心,你也可以看作是一个平台,就好比一个舞台,明星想来开演唱会,喜欢这个明星的粉丝们想来听演唱会。那么这里明星就是发布者,粉丝就是订阅者。当然啦,较真的人可能会认为明星的经纪人才是真正的发布者,他们才是和举办场地做沟通的人,那个这又扯远了,这个就扯到代理模式了。那么明星发布演唱会,他会把这个信息传递给舞台方也就是举办方,举办方收到消息就会通知所有关注这个消息的粉丝群体。通过这种方式解耦发布者和订阅者。
- 观察者是单向的,发布订阅是双向的。
其实再仔细琢磨下,这个舞台可以做演唱会,可以做联欢晚会,可以做运动会,可以做拍卖会,等等这个舞台的功能有很多,每种舞台适合不同的观众群体,发布者可以根据适合的主题发布活动,订阅者也可以根据自己喜欢的主题订阅。
![我理解下的发布订阅图 发布订阅图](/images/pub_sub.png)