"실용적인 프로그래머"에 설명 된 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/
답변:
내 의견은 많은 현대의 Dependency Injection 프레임 워크가 응용 프로그램 아키텍처를위한 화이트 보드 패턴을 구현 한 것입니다. 특히 Google Guice 를 사용하면 생성 된 객체에 여러 가지 방법으로 주석을 달아 (@Named 주석을 사용한 이름 포함) "인젝터"(또는 호출하려는 화이트 보드)에서 객체의 특정 인스턴스를 가져올 수 있습니다. . 또한 다양한 모듈이 인젝터 (화이트 보드)에 서비스를 제공하는 데 협력 할 수 있습니다.
Spring은 비슷합니다. 예를 들어 각 컨텍스트 XML 파일은 Spring 컨텍스트 (화이트 보드)의 객체에 기여하고 사용할 수 있습니다.
OSGi 및 해당 서비스 레지스트리는 화이트 보드 구현의 또 다른 예입니다. 다음은 OSGi가 OSGi 기반 시스템에서 이벤트 처리 제어 를 반전 시키기 위해 화이트 보드 패턴을 사용하고 지원하는 방법에 대한 설명입니다.
다음은 Spring 동적 모듈, OSGi 및 화이트 보드 패턴 (51 페이지) 의 관계에 대한 학습서 입니다.
내 경험에 따르면 Guice는 특히 화이트 보드 패턴 구현을 지원하는 데 매우 강력합니다. 대부분의 물체가 Guice Injector (화이트 보드)에서 주입되는 경우 특정 클래스에 필요한 다른 화이트 보드로 쉽게 주입 할 수 있습니다. 따라서 Guice 응용 프로그램 아키텍처 화이트 보드를 사용하여 특정 화이트 보드 (예 : 도메인에 대한 사실이 포함 된 보드)를 부트 스트랩 할 수 있습니다. (아직 직접적이지는 않지만 Spring, OSGi 또는 다른 많은 것들과 비슷하게 할 수 있습니다).
글쎄, 디자인 패턴은 정확히 그런 것입니다; 알고리즘 개발을위한 개념적 패턴, 반드시 일반적인 경우에 작동하는 상기 패턴의 구현은 아니다. 따라서 "내장"기능을 제공하는 라이브러리는 특정 패턴을 사용할 수 있으며, 해당 패턴의 사용에 대한 예일 수도 있지만 패턴이 아닙니다. 필요에 맞게 구성 할 수있는 StrategyProvider 클래스가 필요하지 않으며 클래스 집합을 정의하고 전략 패턴을 따르도록 구성하면됩니다.
아이디어는 흥미 롭습니다. 문서 구성, 순서도, 소셜 네트워크 등에서 잘 작동하는 것처럼 보입니다. 그러나 각 시나리오에서 구현은 상당히 다르며 겹치는 부분이 있지만 "내부 플랫폼 효과"를 나타내지 않고 이러한 모든 시나리오의 요구 사항
OpeBBS (Open BlackBoard System)는 Blackboard 패턴의 사용을 지원하는 Java 구현처럼 보입니다.
그들의 웹 사이트에서 :
OpenBBS는 유연한 워크 플로우 개발을위한 개방적이고 확장 가능한 칠판 시스템입니다. 유연성은 칠판 패턴을 채택하여 달성됩니다. OpenBBS는 모듈 식이며 내장 가능하므로 워크 플로우를위한 경량 솔루션입니다.
소스, jar 및 javadoc 은 Sourceforge에서 찾을 수 있습니다 . Javadoc에는 예상되는 많은 클래스 (Blackboard, BlackboardControl, ControlPlan, KnowledgeSource 등)가 언급되어 있습니다.
유일한 단점은 최신 (그리고 유일한?) 릴리스가 2007 년인 것 같습니다.