設計模式——黑板模式

黑板模式

黑板模式(Blackboard Design Pattern)是觀察者模式的一個擴展允許消息的讀寫同時進行,廣泛地交互消息。

黑板模式允許多個消息讀寫者同時存在,消息的生產者和消費者完全分開,兩者在空間和時間上可以解耦,並且互不干擾。

黑板模式是消息的廣播,主要解決消息的生產者和消費者之間的耦合問題,核心是消息存儲(黑板),它存儲所有消息,並可以隨時被讀取。當然,消息的寫入者也可以變身爲消息的閱讀者,讀寫者在時間上解耦。對於這些消息,消費者只需要關注特定消息,不處理與自己不相關的消息,這一點通常通過過濾器來實現。


黑板模式的實現方式

黑板模式常見的有兩種實現方式:數據庫作爲黑板消息隊列作爲黑板

(1)數據庫作爲黑板

利用數據庫充當黑板,生產者更新數據信息,不同的消費者共享數據庫中信息,這是最常見的實現方式。該方式在技術上容易實現,開發量較少,熟悉度較高。缺點是在大量消息和高頻率訪問的情況下,性能會受到一定影響

在該模式下,消息的讀取是通過消費者主動“拉取”,因此該模式也叫做“拉模式”。

(2)消息隊列作爲黑板

以消息隊列作爲黑板,通過訂閱-發佈模型即可實現黑板模式。這也是黑板模式被淡忘的一個重要原因:消息隊列(Message Queue)已經非常普及了,所有大多人只記得消息隊列不記得黑板模式。在該模式下,消費者接收到的消息是被主動推送過來的,因此該模式也稱爲“推模式”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章