設計模式之黑板模式

2021-09-22 02:13:43 字數 877 閱讀 5246

黑板模式是觀察者模式的乙個擴充套件,知名度並不高,但使用的範圍卻非常廣. 其意圖為: 允許訊息的讀寫同時進行, 廣泛的互動訊息.

簡單的說, 黑板模式允許多個訊息讀寫者同時存在, 訊息的生產者和消費者完全分開. 這就像乙個黑板, 任何乙個老師(訊息的生產者)都可以在上面書寫訊息, 任何乙個學生(訊息的消費者)都可以從黑板上讀取訊息, 兩者在空間和時間上可以解耦, 互不干擾.

示意圖如下:

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

黑板模式一般不會對架構產生什麼影響, 但它通常會要求有乙個清晰的訊息結構. 黑板模式一般都會提供一系列的過濾器,以便訊息的消費者不再接觸到與自己無關的訊息.在實際開發中,黑板模式常見的有兩種實現方式:

資料庫作為黑板. 利用資料庫充當黑板,生產者更新資料,不同的消費則共享資料庫中的資訊, 這是最常見的實現方式. 該方式在技術上容易實現, 開發量較少,熟悉度較高. 缺點是在大量訊息和高頻率訪問的情況下, 效能會受到一定影響. 在該模式下, 訊息的讀取是通過消費者主動"拉取", 因此該模式也叫做"拉模式".

訊息佇列作為黑板. 以訊息佇列作為黑板, 通過訂閱-發布模型即可實現黑板模式. 這也是黑板模式被淡忘的乙個重要原因: 訊息佇列已經非常普及了. 在該模式下, 消費者接收到的訊息是被主動推送過來的, 因此該模式也叫做"推模式".

設計模式之黑板模式

黑板模式是觀察者模式的乙個擴充套件,知名度並不高,但使用的範圍卻非常廣.其意圖為 允許訊息的讀寫同時進行,廣泛的互動訊息.簡單的說,黑板模式允許多個訊息讀寫者同時存在,訊息的生產者和消費者完全分開.這就像乙個黑板,任何乙個老師 訊息的生產者 都可以在上面書寫訊息,任何乙個學生 訊息的消費者 都可以從...

設計模式 黑板模式

黑板模式 blackboard design pattern 是觀察者模式的乙個擴充套件 允許訊息的讀寫同時進行,廣泛地互動訊息。黑板模式允許多個訊息讀寫者同時存在,訊息的生產者和消費者完全分開,兩者在空間和時間上可以解耦,並且互不干擾。黑板模式是訊息的廣播,主要解決訊息的生產者和消費者之間的耦合問...

設計模式 設計模式之工廠模式

工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...