칠판 패턴의 현대 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.