“实用程序程序员”中详细介绍了Blackboard Pattern的 Java现代实用应用程序吗?是否有任何特定的库试图协助实现这一概念?在当前的软件社区(尤其是Java)中,对此模式的普遍共识是什么?
尽管这个想法很有趣,但我觉得这本书的这一部分可能已经过时了。
如果您不熟悉此概念,请访问:http : //flylib.com/books/en/1.315.1.55/1/
“实用程序程序员”中详细介绍了Blackboard Pattern的 Java现代实用应用程序吗?是否有任何特定的库试图协助实现这一概念?在当前的软件社区(尤其是Java)中,对此模式的普遍共识是什么?
尽管这个想法很有趣,但我觉得这本书的这一部分可能已经过时了。
如果您不熟悉此概念,请访问:http : //flylib.com/books/en/1.315.1.55/1/
Answers:
我的观点是,许多现代的依赖注入框架或多或少都是应用程序架构的白板模式的实现。尤其是Google Guice允许您通过多种方式(包括使用@Named注释使用名称)对对象创建的对象进行注释,从而从“注入器”(或您可能希望调用的白板)中获取对象的特定实例。 。它还允许不同的模块进行协作以向注射器(白板)提供服务。
Spring与之类似,每个上下文XML文件(例如)都可以贡献并使用Spring上下文(白板)中的对象。
OSGi及其服务注册表是白板实现的另一个示例。这是对OSGi如何使用和支持白板模式以反转基于OSGi的系统中事件处理的控制的描述
这是一篇关于Spring动态模块,OSGi与白板模式之间关系的教程文件(第51页)。
我的经验是,Guice特别是在支持您自己实现白板模式方面也非常强大。如果您的大多数对象是从Guice Injector(白板)中注入的,则可以轻松地将它们与特定类需要的任何其他白板一起注入。因此,您可以使用Guice应用程序体系结构白板来引导特定的白板(例如,包含有关您的域的事实的白板)。(您也可以对Spring,OSGi或其他许多工具进行类似的操作,尽管可能不那么直接进行)。
嗯,设计模式就是这样。用于算法开发的概念性模式,不一定是在一般情况下有效的所述模式的实现。这样,提供“内置”功能的库可以使用特定的模式,甚至可能是使用该模式的闪亮示例,但它们不是THE模式。您不需要可以配置为满足任何需求的StrategyProvider类,您只需定义一组类并将它们构造为遵循Strategy模式即可。
这个想法很有趣。看起来,它对于文档组织,流程图,社交网络等将是很好的工作。但是,在每种情况下,它的实现都将大不相同,并且尽管存在重叠,但可能无法创建一个满足以下要求的实现:所有这些场景的需求,而不会表现出“平台内效应”(对象/库/应用程序如此复杂且可配置,以至于基本上成为用于构建它的IDE的重新实现)。
OpeBBS(开放式BlackBoard系统)看起来像Java的实现,以支持Blackboard模式的使用。
从他们的网站:
OpenBBS是一个开放且可扩展的黑板系统,用于开发灵活的工作流程。通过采用黑板图案来实现灵活性。OpenBBS是模块化且可嵌入的,这使其成为工作流的轻量级解决方案。
可以在Sourceforge上找到源代码,jar和javadoc 。Javadoc似乎提到了您期望的许多类(Blackboard,BlackboardControl,ControlPlan,KnowledgeSource等)。
唯一的缺点是它的最新版本(也是唯一的?)似乎来自2007年。