在事件總線(EventBus)的架構設計中,用到了發佈/訂閱模式,但發現和觀察者模式挺接近,有時容易發生混淆,現試圖分清一下他們的關係。架構
觀察者模式的角色爲觀察者(observer)和主題(subject)對象,observer須要觀察subject時,需先到subject裏面進行註冊(subject對象持有observer對象的集合句柄),而後,當subject對象的內部狀態發生變化時,把這個變化通知全部的觀察者。 架構設計
發佈、訂閱模式的角色爲發佈者(publisher)和訂閱者(subscriber),pub和sub之間沒有直接的耦合關係,pub發佈一個消息事件(event),sub訂閱感興趣的消息事件,sub也能夠取消訂閱。設計
可初步得出結論:server
觀察者模式中的觀察者是和主題對象緊耦合的。對象
發佈\訂閱模式中的發佈者和訂閱者是鬆耦合的,發佈者和訂閱者是經過事件發生聯繫的。blog
轉:事件
http://geeksun.iteye.com/blog/2232298it