Современная Java-реализация Blackboard Pattern?


11

Есть ли место для практического современного применения в Java шаблона Blackboard, подробно описанного в «Прагматическом программисте» ? Есть ли какая-то конкретная библиотека, которая пытается помочь в реализации этой концепции? Каково общее согласие по этому шаблону в современном сообществе разработчиков программного обеспечения (особенно Java)?

Хотя идея интригует, у меня есть ощущение, что эта часть книги может быть устаревшей.

Если вы не знакомы с этой концепцией: http://flylib.com/books/en/1.315.1.55/1/


Возможно, стоит также проверить это: stackoverflow.com/questions/1204667/…
Стивен Эверс

Первая ссылка в вопросе не работает. Вторая - это длинная статья, в которой подробно рассматриваются некоторые другие шаблоны, затем перечисляются классные доски как связанные, но о них ничего не говорится. Может кто-нибудь знакомый с термином, пожалуйста, отредактируйте вопрос и добавьте краткое определение или пример?
Жюль

Ответы:


6

Мое мнение таково, что многие современные фреймворки Dependency Injection более или менее являются реализацией шаблона доски для архитектуры приложений. В частности, Google Guice позволяет получать конкретные экземпляры объекта из «Инжектора» (или доски, как вы могли бы ее назвать), аннотируя создаваемые им объекты различными способами (в том числе по имени с помощью аннотации @Named). , Это также позволяет различным модулям сотрудничать в предоставлении услуг для Инжектора (белая доска).

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

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

Вот учебное пособие о взаимосвязи между динамическими модулями Spring, OSGi и шаблоном доски (стр. 51).

Мой опыт показывает, что Guice, в частности, также очень силен для поддержки вашей собственной реализации шаблона доски. Если большинство ваших объектов вводятся с помощью Guice Injector (интерактивной доски), тогда их легко внедрить с помощью любой другой интерактивной доски, которая нужна определенному классу. Таким образом, вы можете загрузить определенную доску (например, содержащую факты о вашем домене), используя доску архитектуры приложения Guice. (Вы можете сделать то же самое с Spring, OSGi или многими другими, хотя, возможно, не так прямо).


3
Если кому-то еще это интересно, доски и доски кажутся взаимозаменяемыми. Барбара Лисков назвала их досками, но этот термин, по-видимому, вышел (в основном) из употребления в пользу досок.
Wouter

2

Что ж, шаблоны дизайна именно такие; концептуальные паттерны для разработки алгоритмов, не обязательно реализации указанного паттерна, которые работают в общем случае. Таким образом, библиотеки, которые предоставляют «встроенные» функциональные возможности, могут использовать конкретный шаблон и даже могут быть яркими примерами использования указанного шаблона, но они не являются шаблоном THE. Вам не нужен класс StrategyProvider, который можно настроить для удовлетворения любых потребностей, вы просто определяете набор классов и структурируете их в соответствии с шаблоном Strategy.

Идея интригующая. Похоже, что это будет хорошо работать для организации документов, создания диаграмм, социальных сетей и т. Д. Однако, его реализация в каждом из этих сценариев будет совершенно разной, и, хотя есть совпадение, может быть невозможно создать одну реализацию, которая соответствует требования всех этих сценариев, без проявления «эффекта внутренней платформы» (объект / библиотека / приложение, настолько сложный и настраиваемый, что он в основном становится повторной реализацией среды IDE, использованной для его создания).


1
Я думаю, что ретаггеры немного переусердствовали. Я бы посчитал это скорее архитектурным паттерном, чем дизайнерским паттерном. Больше соответствует SOA, чем Factory Pattern. Возможно, мне не следовало использовать слово «шаблон»
smp7d

Я думаю, что мой ответ остается в силе; Blackboard - это «шаблон», используемый для создания специфичных для требований реализаций, а сам шаблон не предназначен для реализации в общем случае. Ваш пример SOA - это всего лишь концепция; Вы не можете создать осмысленный «движок SOA», не зная, каково его предполагаемое использование (WCF от Microsoft можно рассматривать как «движок SOA», но на самом деле это прокси-архитектура, которую можно применять к SOA-дизайну для упрощения обмена данными. детали, бесполезны без вашей реализации и ограничены внутренней платформой, но это .NET, поэтому мы ожидаем этого).
KeithS

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

0

OpeBBS (открытая система BlackBoard) выглядит как реализация Java для поддержки использования шаблона Blackboard.

С их сайта :

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

Источник, jar и javadoc можно найти в Sourceforge . Javadoc, кажется, упоминает большую часть классов, которые вы ожидаете (Blackboard, BlackboardControl, ControlPlan, KnowledgeSource, ...).

Единственным недостатком является то, что это последний (и единственный?) Релиз, кажется, с 2007 года.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.