Y a-t-il de la place pour une application moderne et pratique en Java du Blackboard Pattern détaillé dans "The Pragmatic Programmer" ? Existe-t-il une bibliothèque particulière qui tente d'aider à la mise en œuvre de ce concept? Quel est le consensus général sur ce modèle dans la communauté actuelle des logiciels (en particulier Java)?
Bien que l'idée soit intrigante, j'ai le sentiment que cette partie du livre peut être dépassée.
Dans le cas où vous n'êtes pas familier avec ce concept: http://flylib.com/books/en/1.315.1.55/1/
Réponses:
Mon opinion est que la plupart des frameworks modernes d'injection de dépendance sont plus ou moins une implémentation du modèle de tableau blanc pour l'architecture d'application. Google Guice en particulier vous permet d'obtenir des instances particulières d'un objet à partir de "l'injecteur" (ou du tableau blanc comme vous aimeriez l'appeler) en annotant les objets qu'il crée de plusieurs façons (y compris par nom en utilisant l'annotation @Named) . Il permet également à différents modules de collaborer pour apporter des services à l'injecteur (tableau blanc).
Spring est similaire, chaque fichier XML de contexte (par exemple) peut contribuer et utiliser des objets du contexte Spring (tableau blanc).
OSGi et son registre de services sont un autre exemple d'implémentation d'un tableau blanc. Voici une description de la façon dont OSGi utilise et prend en charge le modèle de tableau blanc pour son inversion du contrôle de la gestion des événements dans les systèmes OSGi.
Voici un didacticiel sur la relation entre les modules dynamiques Spring, OSGi et le modèle de tableau blanc (page 51).
D'après mon expérience, Guice en particulier est également très puissant pour prendre en charge votre propre implémentation du modèle de tableau blanc. Si la plupart de vos objets sont injectés à partir de l'injecteur Guice (tableau blanc), il est facile de les injecter avec tout autre tableau blanc dont une classe particulière a besoin. Vous pouvez donc amorcer un tableau blanc spécifique (par exemple, un contenant des faits sur votre domaine) en utilisant le tableau blanc de l'architecture d'application Guice. (Vous pouvez faire de même avec Spring, OSGi ou plusieurs autres aussi bien que peut-être pas aussi directement).
la source
Eh bien, les modèles de conception sont exactement cela; modèles conceptuels pour le développement d'algorithmes, pas nécessairement des implémentations dudit modèle qui fonctionnent dans le cas général. En tant que telles, les bibliothèques qui fournissent des fonctionnalités "intégrées" peuvent utiliser un modèle particulier, et peuvent même être des exemples brillants de l'utilisation dudit modèle, mais elles ne sont PAS LE modèle. Vous n'avez pas besoin d'une classe StrategyProvider qui peut être configurée pour répondre à n'importe quel besoin, il vous suffit de définir un ensemble de classes et de les structurer pour suivre le modèle de stratégie.
L'idée intrigue. Il semble que cela fonctionnerait bien pour l'organisation de documents, les diagrammes de flux, les réseaux sociaux, etc. etc. Cependant, sa mise en œuvre dans chacun de ces scénarios serait assez différente, et bien qu'il y ait chevauchement, il peut être impossible de créer une mise en œuvre qui réponde aux exigences de tous ces scénarios, sans présenter "d'effet de plate-forme interne" (un objet / bibliothèque / application si complexe et configurable qu'il devient fondamentalement une réimplémentation de l'IDE utilisé pour le construire).
la source
OpeBBS (Open BlackBoard System) ressemble à une implémentation Java pour prendre en charge l'utilisation du modèle Blackboard.
Depuis leur site Web :
La source, le pot et le javadoc peuvent être trouvés sur Sourceforge . Le Javadoc semble mentionner la plupart des classes auxquelles vous vous attendez (Blackboard, BlackboardControl, ControlPlan, KnowledgeSource, ...).
Le seul inconvénient est que la dernière version (et la seule?) Semble être de 2007.
la source