Сучасна реалізація шаблону Blackboard Pattern Java?


11

Чи є на практиці сучасне практичне застосування на Java шаблону дошки, детально описаному в "Прагматичному програмісті" ? Чи є якась конкретна бібліотека, яка намагається допомогти в реалізації цієї концепції? Який загальний консенсус щодо цього шаблону в теперішньому програмному співтоваристві (особливо Java)?

Хоча ідея інтригуюча, у мене є відчуття, що ця частина книги може бути застарілою.

Якщо ви не знайомі з цією концепцією: http://flylib.com/books/en/1.315.1.55/1/


Ви можете перевірити це також: stackoverflow.com/questions/1204667/…
Стівен Еверс

Перша ланка у питанні розірвана. Друга - це довга стаття, яка проникає в розумну глибину щодо декількох інших шаблонів, потім перераховує Blackboards як пов'язані, але нічого не говорить про них. Може хтось знайомий із терміном, будь ласка, відредагуйте питання та додайте коротке визначення чи приклад?
Жуль

Відповіді:


6

На мою думку, багато сучасних рамок Dependency Injection є більш-менш реалізацією схеми білої дошки для архітектури додатків. Google Guice, зокрема, дозволяє отримувати конкретні екземпляри об'єкта з "Інжектора" (або дошки, як ви хочете назвати його), анотуючи створені ним об'єкти різними способами (в тому числі за назвою за допомогою анотації @Named) . Він також дозволяє співпрацювати різні модулі, надаючи послуги інжектору (дошці).

Spring схожий, кожен XML-файл контексту (наприклад) може сприяти та використовувати об'єкти з контексту Spring (дошка).

OSGi та його реєстр послуг - ще один приклад реалізації дошки. Ось опис того, як OSGi використовує та підтримує шаблон дошки для його інверсії управління подіями в системах на базі OSGi

Ось підручник про взаємозв'язок між динамічними модулями Spring, OSGi та схемою дошки (стор. 51).

Мій досвід полягає в тому, що, зокрема, Гіс є дуже потужним для підтримки вашої власної реалізації схеми дошки. Якщо більшість ваших об'єктів вводиться з інжектора Guice (дошка), то їх легко ввести у будь-яку іншу дошку, яка потребує певного класу. Таким чином, ви можете завантажувати конкретну білу дошку (наприклад, таку, яка містить факти про ваш домен) за допомогою білої дошки архітектури додатків Guice. (Ви можете зробити подібне з Spring, OSGi або багатьма іншими, хоча це може бути не так прямо).


3
У випадку, якщо хтось ще цікавиться цим питанням, дошки та дошки здаються взаємозамінними термінами. Білі дошки - це те, що їх назвала Барбара Лісков, але, здається, цей термін вийшов (здебільшого) з вжитку, на користь дошок.
Wouter

2

Ну, дизайнерські зразки - це саме те; концептуальні зразки розробки алгоритмів, не обов'язково реалізацію згаданого шаблону, які працюють у загальному випадку. Таким чином, бібліотеки, які надають "вбудований" функціонал, можуть використовувати певний шаблон, і навіть можуть бути яскравими прикладами використання згаданого шаблону, але вони не є ТО. Вам не потрібен клас StrategyProvider, який можна налаштувати для задоволення будь-яких потреб, ви просто визначите набір класів і структуруйте їх у відповідності з шаблоном стратегії.

Ідея інтригуюча. Схоже, це буде добре працювати з організацією документообігу, блок-схемами, соціальними мережами тощо. Однак його реалізація в кожному з цих сценаріїв була б зовсім іншою, і, хоча існує перекриття, створити одну реалізацію, яка відповідає вимоги всіх цих сценаріїв, не проявляючи "внутрішнього платформного ефекту" (об'єкт / бібліотека / додаток настільки складний і конфігурується, що він в основному стає реалізацією IDE, використовуваним для його побудови).


1
Я думаю, що торговці трохи переборщили. Я вважав би це архітектурним малюнком, ніж закономірним. Більше відповідає SOA, ніж заводський зразок. Можливо, я не повинен був вживати слово 'pattern'
smp7d

Я думаю, що моя відповідь стоїть; Дошка - це "шаблон", який використовується для створення конкретних вимог, і сам шаблон не повинен мати загальну справу. Ваш приклад SOA - це все ще лише концепція; ви не можете побудувати значущий "двигун SOA", не знаючи, яким буде призначення (WCF Майкрософт може розглядатися як "двигун SOA", але насправді це проксі-архітектура, яка може бути застосована до дизайну SOA для спрощення зв'язку деталі; без вашої реалізації та меж внутрішньої платформи це марно, але це .NET, тому ми цього очікуємо).
KeithS

Ваша відповідь, безумовно, не без поваги. Однак можуть бути технології, які допомагають використовувати цю схему. Тільки тому, що не існує уніфікованої реалізації функціональності веб-служб, яка б задовольнила всі вимоги, не означає, що в Java немає бібліотек та пакетів, які б допомогли в цій галузі. Тим не менш, я відредагую своє питання, щоб зробити це більш зрозумілим. Дякую.
smp7d

0

OpeBBS (Open BlackBoard System) виглядає як реалізація Java для підтримки використання шаблону Blackboard.

З їх веб-сайту :

OpenBBS - це відкрита і розширювана дошка для розвитку гнучких робочих процесів. Гнучкість досягається завдяки прийняттю схеми дошки. OpenBBS є модульним і вбудованим, що робить його легким рішенням для робочих процесів.

Джерело, банку та javadoc можна знайти на Sourceforge . Здається, Javadoc згадує більшість класів, яких ви очікували (Blackboard, BlackboardControl, ControlPlan, KnowledgeSource, ...).

Єдиним недоліком є ​​те, що останній (і єдиний?) Випуск здається з 2007 року.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.