Blackboard Pattern的现代Java实现?


11

“实用程序程序员”中详细介绍了Blackboard Pattern的 Java现代实用应用程序吗?是否有任何特定的库试图协助实现这一概念?在当前的软件社区(尤其是Java)中,对此模式的普遍共识是什么?

尽管这个想法很有趣,但我觉得这本书的这一部分可能已经过时了。

如果您不熟悉此概念,请访问:http : //flylib.com/books/en/1.315.1.55/1/



问题中的第一个链接已断开。第二篇是一篇长篇文章,深入探讨了其他几种模式,然后将Blackboards列出为相关内容,但未对它们进行任何说明。熟悉该术语的人可以编辑问题并添加简短定义或示例吗?
Jules

Answers:


6

我的观点是,许多现代的依赖注入框架或多或少都是应用程序架构的白板模式的实现。尤其是Google Guice允许您通过多种方式(包括使用@Named注释使用名称)对对象创建的对象进行注释,从而从“注入器”(或您可能希望调用的白板)中获取对象的特定实例。 。它还允许不同的模块进行协作以向注射器(白板)提供服务。

Spring与之类似,每个上下文XML文件(例如)都可以贡献并使用Spring上下文(白板)中的对象。

OSGi及其服务注册表是白板实现的另一个示例。这是对OSGi如何使用和支持白板模式以反转基于OSGi的系统中事件处理的控制的描述

这是一篇关于Spring动态模块,OSGi与白板模式之间关系的教程文件(第51页)。

我的经验是,Guice特别是在支持您自己实现白板模式方面也非常强大。如果您的大多数对象是从Guice Injector(白板)中注入的,则可以轻松地将它们与特定类需要的任何其他白板一起注入。因此,您可以使用Guice应用程序体系结构白板来引导特定的白板(例如,包含有关您的域的事实的白板)。(您也可以对Spring,OSGi或其他许多工具进行类似的操作,尽管可能不那么直接进行)。


3
万一其他人对此感到疑惑,白板和黑板似乎是可以互换的术语。白板是芭芭拉·李斯科夫(Barbara Liskov)称呼的,但这个术语(大部分)似乎已不再使用,而是使用黑板。
Wouter

2

嗯,设计模式就是这样。用于算法开发的概念性模式,不一定是在一般情况下有效的所述模式的实现。这样,提供“内置”功能的库可以使用特定的模式,甚至可能是使用该模式的闪亮示例,但它们不是THE模式。您不需要可以配置为满足任何需求的StrategyProvider类,您只需定义一组类并将它们构造为遵循Strategy模式即可。

这个想法很有趣。看起来,它对于文档组织,流程图,社交网络等将是很好的工作。但是,在每种情况下,它的实现都将大不相同,并且尽管存在重叠,但可能无法创建一个满足以下要求的实现:所有这些场景的需求,而不会表现出“平台内效应”(对象/库/应用程序如此复杂且可配置,以至于基本上成为用于构建它的IDE的重新实现)。


1
我认为重剑有些过分热心。我认为这更多的是建筑模式,而不是设计模式。与工厂模式更符合SOA。也许我不应该使用“模式”一词
-smp7d

我认为答案是正确的。黑板是用于创建特定于需求的实现的“模式”,并且模式本身并不旨在具有一般情况的实现。您的SOA示例仍然只是一个概念。您无法在不知道预期用途的情况下构建有意义的“ SOA引​​擎”(Microsoft的WCF可能被认为是“ SOA引​​擎”,但实际上,它是一种代理架构,可以应用于SOA设计以简化通信)细节;没有您的实现和内部平台的边界,它是无用的,但是它是.NET,所以我们希望如此。
KeithS 2012年

您的回答绝对不是没有道理的。但是,可能有一些技术可以帮助使用此模式。仅仅因为没有统一的Web服务功能实现来满足所有要求,并不意味着Java中没有库和程序包可以在这方面提供帮助。不过,我将编辑我的问题以使其更清楚。谢谢。
smp7d 2012年

0

OpeBBS(开放式BlackBoard系统)看起来像Java的实现,以支持Blackboard模式的使用。

从他们的网站

OpenBBS是一个开放且可扩展的黑板系统,用于开发灵活的工作流程。通过采用黑板图案来实现灵活性。OpenBBS是模块化且可嵌入的,这使其成为工作流的轻量级解决方案。

可以在Sourceforge上找到源代码,jar和javadoc 。Javadoc似乎提到了您期望的许多类(Blackboard,BlackboardControl,ControlPlan,KnowledgeSource等)。

唯一的缺点是它的最新版本(也是唯一的?)似乎来自2007年。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.