1. 程式人生 > >觀察者模式和發布/訂閱模式的區別

觀察者模式和發布/訂閱模式的區別

observe nbsp 初步 有時 觀察 觀察者 發生 狀態 發現

在事件總線(EventBus)的架構設計中,用到了發布/訂閱模式,但發現和觀察者模式挺接近,有時容易發生混淆,現試圖分清一下他們的關系。

觀察者模式的角色為觀察者(observer)和主題(subject)對象,observer需要觀察subject時,需先到subject裏面進行註冊(subject對象持有observer對象的集合句柄),然後,當subject對象的內部狀態發生變化時,把這個變化通知所有的觀察者。

發布、訂閱模式的角色為發布者(publisher)和訂閱者(subscriber),pub和sub之間沒有直接的耦合關系,pub發布一個消息事件(event),sub訂閱感興趣的消息事件,sub也可以取消訂閱。

可初步得出結論:

觀察者模式中的觀察者是和主題對象緊耦合的。

發布\訂閱模式中的發布者和訂閱者是松耦合的,發布者和訂閱者是通過事件發生聯系的。

轉:

http://geeksun.iteye.com/blog/2232298

觀察者模式和發布/訂閱模式的區別