Blackboard Patternの最新のJava実装?


11

「The Pragmatic Programmer」で詳述されているBlackboard Patternの Javaの実用的な最新アプリケーションの余地はありますか?この概念の実装を支援しようとする特定のライブラリはありますか?現在のソフトウェアコミュニティ(特にJava)におけるこのパターンに関する一般的なコンセンサスは何ですか?

このアイデアは興味をそそるものですが、本のこの部分は時代遅れかもしれないと感じています。

この概念に慣れていない場合:http : //flylib.com/books/en/1.315.1.55/1/


同様に、このアウトをチェックすることをお勧めします:stackoverflow.com/questions/1204667/...
スティーブン・エヴァース

質問の最初のリンクが壊れています。2つ目は長い記事で、他のいくつかのパターンについて妥当な深さに入り、関連するものとしてBlackboardをリストしますが、それらについては何も述べていません。この用語に詳しい人が質問を編集して、簡単な定義や例を追加してください。
ジュール

回答:


6

私の意見では、現代の依存性注入フレームワークの多くは、アプリケーションアーキテクチャのホワイトボードパターンの実装であり、多かれ少なかれです。特にGoogle Guiceでは、作成したオブジェクトにさまざまな方法で注釈を付ける(@Named注釈を使用した名前を含む)ことにより、「インジェクター」(またはホワイトボード)からオブジェクトの特定のインスタンスを取得できます。 。また、異なるモジュールがインジェクター(ホワイトボード)にサービスを提供する際に協力することもできます。

Springも同様です。たとえば、各コンテキストXMLファイルは、Springコンテキスト(ホワイトボード)のオブジェクトに貢献して使用できます。

OSGiとそのサービスレジストリは、ホワイトボード実装の別の例です。OSGiベースのシステムでのイベント処理の制御反転のために、OSGiがホワイトボードパターンを使用およびサポートする方法について説明します。

Springの動的モジュール、OSGi、ホワイトボードパターン(51ページ)の関係に関するチュートリアルペーパーを次に示します

私の経験では、特にGuiceは、ホワイトボードパターンの独自の実装をサポートするためにも非常に強力です。ほとんどのオブジェクトがGuice Injector(ホワイトボード)から注入される場合、特定のクラスに必要な他のホワイトボードを簡単に注入できます。したがって、Guiceアプリケーションアーキテクチャホワイトボードを使用して、特定のホワイトボード(ドメインに関する情報を含むホワイトボードなど)をブートストラップできます。(Spring、OSGi、または他の多くでも同様のことができますが、直接ではありません)。


3
他の誰かがこれについて疑問に思っている場合、ホワイトボードと黒板は互換性のある用語のようです。ホワイトボードはバーバラ・リスコフがそれらを呼んだものですが、この用語は黒板を支持して、(ほとんど)使用されなくなったようです。
Wouter

2

まあ、デザインパターンはまさにそれです。アルゴリズムの開発のための概念パターン。一般的なケースで機能するパターンの実装とは限りません。そのため、「組み込み」機能を提供するライブラリーは特定のパターンを使用する場合があり、そのパターンの使用例として輝かしい場合もありますが、それらはパターンではありません。ニーズを満たすように構成できるStrategyProviderクラスは必要ありません。クラスのセットを定義し、ストラテジーパターンに従うように構造化するだけです。

このアイデアは興味深いものです。ドキュメントの編成、フローチャート、ソーシャルネットワークなどでうまく機能するように見えます。ただし、これらのシナリオのそれぞれでの実装はかなり異なり、重複している間、1つの実装を満たすことは不可能かもしれません。これらのすべてのシナリオの要件。「内部プラットフォーム効果」を示すことなく(オブジェクト/ライブラリ/アプリケーションは非常に複雑で構成可能なため、基本的にはビルドに使用されたIDEの再実装になります)。


1
反逆者たちは少し熱心になったと思う。私はこれを設計パターンというよりも建築パターンと考えています。FactoryパターンよりもSOAに近い。たぶん私は言葉「パターン」を使用してはならない
smp7d

私の答えは立っていると思います。Blackboardは、要件固有の実装を作成するために使用される「パターン」であり、パターン自体は一般的な実装を意図したものではありません。SOAの例はまだ概念にすぎません。意図する使用法がわからないと意味のある「SOAエンジン」を構築することはできません(MicrosoftのWCFは「SOAエンジン」と考えられるかもしれませんが、実際には通信を簡素化するためにSOA設計に適用できるプロキシアーキテクチャです)詳細;実装がなければ役に立たず、内部プラットフォームとの境界がありますが、.NETなので、それを期待しています)。
キース

あなたの答えには間違いなくメリットがあります。ただし、このパターンの使用を支援するテクノロジーが存在する場合があります。すべての要件を満たすためのWebサービス機能の統一された実装がないからといって、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.