[資訊] 發佈訂閱模式與觀察者模式

發佈訂閱模式與觀察者模式
https://segmentfault.com/a/1190000018706349

設計模式並不直接用來完成代碼的編寫,而是描述在各種不同情況下,要怎麼解決問題的一種方案,他不是一個死的機制,他是一種思想,一種寫代碼的形式。每種語言對於各種設計模式都有他們自己的實現方式。

觀察者模式(Observer Pattern)
觀察者模式定義了物件間的一種一對多的依賴關係,當一個物件的狀態發生改變時,所有依賴於它的物件都將得到通知,並自動更新。觀察者模式屬於行為型模式,行為型模式關注的是物件之間的通訊,觀察者模式就是觀察者和被觀察者之間的通訊。

觀察者模式有一個別名叫“發佈-訂閱模式”,或者說是“訂閱-發佈模式”,訂閱者和訂閱目標是聯繫在一起的,當訂閱目標發生改變時,逐個通知訂閱者。我們可以用報紙期刊的訂閱來形象的說明,當你訂閱了一份報紙,每天都會有一份最新的報紙送到你手上,有多少人訂閱報紙,報社就會發多少份報紙,報社和訂報紙的客戶就是上面文章開頭所說的“一對多”的依賴關係。

發佈訂閱模式(Pub-Sub Pattern)
其實24種基本的設計模式中並沒有發佈訂閱模式,上面也說了,他只是觀察者模式的一個別稱。但是經過時間的沉澱,似乎他已經強大了起來,已經獨立於觀察者模式,成為另外一種不同的設計模式。在現在的發佈訂閱模式中,稱為發佈者的消息發送者不會將消息直接發送給訂閱者,這意味著發佈者和訂閱者不知道彼此的存在。在發佈者和訂閱者之間存在第三個元件,稱為消息代理或調度中心或中介軟體,它維持著發佈者和訂閱者之間的聯繫,過濾所有發佈者傳入的消息並相應地分發它們給訂閱者。


#Observer, Pub-Sub, Design, Pattern, 發佈訂閱模式, 觀察者模式

留言