定義:
黑板模式是一種常用的架構模式,應用中的多種不同數據處理邏輯相互影響和協同來完成數據分析處理。就好像多位不同的專家在同一黑板上交流思想,每個專家都可以獲得別的專家寫在黑板上的信息,同時也可以用自己的分析去更新黑板上的信息,從而影響其它專家。
特定場景:
可用於非確定性問題求解,啟發式解決過程,具有可維護性,可重用性。但是不能確保期望結果,效率低下,回退,不支持並行,共享空間的訪問需要同步。
一個問題:
解決沒有可行而確定的解決方案將原始數據轉換為高級數據結構(如圖表或英語詞組)。存在這種問題的領域包括視覺識別、圖像識別、語音識別和監視等。這種問題具有如下特點:可分解成多個子問題,但每個子問題都屬於不同的專業領域。
對於這種問題,影響其解決方案的作用力如下。
- 不可能在合理的時間內遍歷整個解空間。
- 鑒於領域不成熟,可能需要對同一個子任務嘗試不同的算法。
- 子問題的算法各不相同。
- 輸入、中間結果和最終結果的表示方式各不相同,而不同算法是根據不同范式實現的。
- 一個算法通常使用另一個算法的結果。
- 涉及不可靠的數據和近似解。
- 算法的執行順序不確定時還可能要求支持並行性。
解決方案:

實現 (語音識別)

實例:
例如語音識別,首先從開發語音識別這功能的角度而言,對於錄入的語音具有不確定性,系統有可能無法識別,所以需要不斷地擴充語言包(例如你說一句普通話能夠識別,但是說一句家鄉話就可能無法識別),所以滿足黑板模式的適用條件。其次對於不同的語言都需要特定的語言專家,這些專家精通的語言有很大差異,語言包便是知識源,而編寫每個語言包的專家便是控制的部分。
實際應用:
A 利用數據庫
利用數據庫充當黑板,不同的應用共享數據庫中信息,並且可以更新數據信息。這也是最常見的實現方式。
特點:
1 便於實現信息的查詢,篩選和統計,這方面關系數據庫提供了SQL 92的強大支持。
2 不能用於較高實時性要求的環境,這種實現是工作在“拉模式”下的,並且高頻率的訪問數據庫會導致嚴重的系統性能問題。
B 利用發布—訂閱模式
這種實現方式通常采用消息隊列作為黑板,隊列工作在主題模式(Topic),專家作為隊列的訂閱者,同時可以向隊列發送消息,消息會被發送至所有訂閱者。以上過程實現了專家間的信息交流。
特點:
1 可以有效應用於實時性要求較高的系統,這種實現工作在“推模式”下。
2 難於實現信息的統計分析,不像實現方式一那樣可以通過SQL支持,這些工作必須開發者自己完成。
4.這種模式對於沒有確定解決方案策略的問題是有用的。黑板模式由3個主要組成部分組成。
- 黑板——包含來自解決方案空間的對象的結構化全局內存
- 知識源——專門的模塊和它們自己的表示
- 控制組件——選擇、配置和執行模塊
所有的組件都可以訪問黑板。組件可以生成添加到黑板上的新數據對象。組件在黑板上查找特定類型的數據,並通過與現有知識源的模式匹配來查找這些數據。
