칠판 패턴의 현대 Java 구현?


11

"실용적인 프로그래머"에 설명 된 Blackboard Pattern의 Java로 실용적인 현대 응용 프로그램을위한 공간이 있습니까? 이 개념의 구현을 지원하려는 특정 라이브러리가 있습니까? 현재 소프트웨어 커뮤니티 (특히 Java)에서이 패턴에 대한 일반적인 합의는 무엇입니까?

아이디어가 흥미롭지 만이 부분이 오래되었다고 생각합니다.

이 개념에 익숙하지 않은 경우 : http://flylib.com/books/en/1.315.1.55/1/


이것도 확인하고 싶을 수도 있습니다 : stackoverflow.com/questions/1204667/…
Steven Evers

질문의 첫 번째 링크가 깨졌습니다. 두 번째는 다른 여러 패턴에 대해 합리적인 깊이로 들어가고 칠판을 관련있는 것으로 나열하지만 그것에 대해 아무 말도하지 않는 긴 기사입니다. 용어에 익숙한 사람이 질문을 편집하고 간단한 정의 나 예제를 추가 할 수 있습니까?
Jules

답변:


6

내 의견은 많은 현대의 Dependency Injection 프레임 워크가 응용 프로그램 아키텍처를위한 화이트 보드 패턴을 구현 한 것입니다. 특히 Google Guice 를 사용하면 생성 된 객체에 여러 가지 방법으로 주석을 달아 (@Named 주석을 사용한 이름 포함) "인젝터"(또는 호출하려는 화이트 보드)에서 객체의 특정 인스턴스를 가져올 수 있습니다. . 또한 다양한 모듈이 인젝터 (화이트 보드)에 서비스를 제공하는 데 협력 할 수 있습니다.

Spring은 비슷합니다. 예를 들어 각 컨텍스트 XML 파일은 Spring 컨텍스트 (화이트 보드)의 객체에 기여하고 사용할 수 있습니다.

OSGi 및 해당 서비스 레지스트리는 화이트 보드 구현의 또 다른 예입니다. 다음은 OSGi가 OSGi 기반 시스템에서 이벤트 처리 제어반전 시키기 위해 화이트 보드 패턴을 사용하고 지원하는 방법에 대한 설명입니다.

다음은 Spring 동적 모듈, OSGi 및 화이트 보드 패턴 (51 페이지) 의 관계에 대한 학습서 입니다.

내 경험에 따르면 Guice는 특히 화이트 보드 패턴 구현을 지원하는 데 매우 강력합니다. 대부분의 물체가 Guice Injector (화이트 보드)에서 주입되는 경우 특정 클래스에 필요한 다른 화이트 보드로 쉽게 주입 할 수 있습니다. 따라서 Guice 응용 프로그램 아키텍처 화이트 보드를 사용하여 특정 화이트 보드 (예 : 도메인에 대한 사실이 포함 된 보드)를 부트 스트랩 할 수 있습니다. (아직 직접적이지는 않지만 Spring, OSGi 또는 다른 많은 것들과 비슷하게 할 수 있습니다).


3
다른 사람이 이것에 대해 궁금해하는 경우, 화이트 보드와 칠판은 서로 교환 가능한 용어로 보입니다. 화이트 보드는 Barbara Liskov가 말한 것이지만,이 용어는 칠판을 선호하여 (대부분) 사용하지 않는 것 같습니다.
Wouter

2

글쎄, 디자인 패턴은 정확히 그런 것입니다; 알고리즘 개발을위한 개념적 패턴, 반드시 일반적인 경우에 작동하는 상기 패턴의 구현은 아니다. 따라서 "내장"기능을 제공하는 라이브러리는 특정 패턴을 사용할 수 있으며, 해당 패턴의 사용에 대한 예일 수도 있지만 패턴이 아닙니다. 필요에 맞게 구성 할 수있는 StrategyProvider 클래스가 필요하지 않으며 클래스 집합을 정의하고 전략 패턴을 따르도록 구성하면됩니다.

아이디어는 흥미 롭습니다. 문서 구성, 순서도, 소셜 네트워크 등에서 잘 작동하는 것처럼 보입니다. 그러나 각 시나리오에서 구현은 상당히 다르며 겹치는 부분이 있지만 "내부 플랫폼 효과"를 나타내지 않고 이러한 모든 시나리오의 요구 사항


1
나는 리타 거가 약간 열광적이라고 생각합니다. 나는 이것을 디자인 패턴보다 건축 패턴보다 더 고려할 것입니다. 팩토리 패턴보다 SOA와 더 일치합니다. 어쩌면 나는 'pattern'이라는 단어를 사용해서는 안됩니다
smp7d

나는 내 대답이 선다고 생각한다. Blackboard는 요구 사항 별 구현을 만드는 데 사용되는 "패턴"이며 패턴 자체는 일반적인 구현을 의도하지 않습니다. SOA의 예는 여전히 개념 일뿐입니다. 의도 된 용도가 무엇인지 모르면 의미있는 "SOA 엔진"을 구축 할 수 없습니다 (Microsoft의 WCF는 "SOA 엔진"으로 간주 될 수 있지만 실제로는 통신을 단순화하기 위해 SOA 설계에 적용될 수있는 프록시 아키텍처입니다. 내부 플랫폼의 구현과 경계가 없으면 쓸모가 없지만 .NET이므로 기대합니다).
KeithS

당신의 대답은 확실히 가치가 없습니다. 그러나이 패턴의 사용을 지원하는 기술이있을 수 있습니다. 모든 요구 사항을 충족하기위한 통합 웹 서비스 기능 구현이 없다고해서이 영역에 도움이되는 라이브러리와 패키지가 Java에 없다는 것은 아닙니다. 그럼에도 불구하고 더 명확하게하기 위해 질문을 편집 할 것입니다. 감사.
smp7d

0

OpeBBS (Open BlackBoard System)는 Blackboard 패턴의 사용을 지원하는 Java 구현처럼 보입니다.

그들의 웹 사이트에서 :

OpenBBS는 유연한 워크 플로우 개발을위한 개방적이고 확장 가능한 칠판 시스템입니다. 유연성은 칠판 패턴을 채택하여 달성됩니다. OpenBBS는 모듈 식이며 내장 가능하므로 워크 플로우를위한 경량 솔루션입니다.

소스, jar 및 javadoc 은 Sourceforge에서 찾을 수 있습니다 . Javadoc에는 예상되는 많은 클래스 (Blackboard, BlackboardControl, ControlPlan, KnowledgeSource 등)가 언급되어 있습니다.

유일한 단점은 최신 (그리고 유일한?) 릴리스가 2007 년인 것 같습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.