黑板模式是一种经常使用的架构模式,是观察者模式的一个扩展,应用中的多种不一样数据处理逻辑相互影响和协同来完成数据分析处理。容许消息的读写同时进行,普遍地交互消息。就好像多位不一样的专家在同一黑板上交流思想,每一个专家均可以得到别的专家写在黑板上的信息,同时也能够用本身的分析去更新黑板上的信息,从而影响其它专家。好比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
优势:能够有效应用于实时性要求较高的系统,这种实现工做在“推模式”下。对象