黑板模式是一種經常使用的架構模式,是觀察者模式的一個擴展,應用中的多種不一樣數據處理邏輯相互影響和協同來完成數據分析處理。容許消息的讀寫同時進行,普遍地交互消息。就好像多位不一樣的專家在同一黑板上交流思想,每一個專家均可以得到別的專家寫在黑板上的信息,同時也能夠用本身的分析去更新黑板上的信息,從而影響其它專家。好比A觀察了B、C、D、E、F這麼多個對象,按照觀察者模式,當B、C、D、E、F中某個對象狀態改變時,經過初始化一個A對象而後利用A對象去調用operation操做。可是在黑板模式中是這樣,B、C、D、E、F一旦狀態改變,它會將其記錄在一個相似黑板的統一中央數據中,而後A對象只需從黑板上關注本身的觀察對象狀態是否發生改變,一旦有改變則調用operation()操做。數據庫
黑板模式通常不會對架構產生什麼影響,但它一般會要求有一個清晰的消息結構。黑板模式通常都會提供一系列的過濾器,以便消息的消費者再也不接觸到與本身無關的消息。在實際開發中,黑板模式常見的有兩種實現方式:網絡
數據庫做爲黑板架構
利用數據庫充當黑板,生產者更新數據信息,不一樣的消費者共享數據庫中信息,這是最多見的實現方式。該方式在技術上容易實現,開發量較少,熟悉度較高。缺點是在大量消息和高頻率訪問的狀況下,性能會受到必定影響。在該模式下,消息的讀取是經過消費者主動「拉取」,所以該模式也叫作「拉模式」。性能
消息隊列做爲黑板人工智能
以消息隊列做爲黑板,經過訂閱-發佈模型便可實現黑板模式。這也是黑板模式被淡忘的一個重要緣由:消息隊列(Message Queue)已經很是普及了,作Java開發的已經沒有幾個不知道消息隊列的。在該模式下,消費者接收到的消息是被主動推送過來的,所以該模式也稱爲「推模式」。spa
優勢:能夠有效應用於實時性要求較高的系統,這種實現工做在「推模式」下。對象