Implementazione Java moderna di Blackboard Pattern?

11

C'è spazio per un'applicazione pratica e moderna in Java del Pattern di lavagna descritto in "Il programmatore pragmatico" ? C'è qualche libreria particolare che tenta di aiutare nell'implementazione di questo concetto? Qual è il consenso generale su questo modello nella presente comunità di software (specialmente Java)?

Anche se l'idea è intrigante, ho la sensazione che questa parte del libro possa essere superata.

Nel caso in cui non hai familiarità con questo concetto: link

    
posta smp7d 02.02.2012 - 15:57
fonte

3 risposte

6

La mia opinione è che molti dei moderni framework di Dipendenza Injection sono più o meno un'implementazione del modello di lavagna per l'architettura dell'applicazione. Google Guice ti consente in particolare di ottenere istanze particolari di un oggetto da "Injector" (o lavagna come te potrebbe piacere chiamarlo) annotando gli oggetti che crea in diversi modi (incluso per nome usando l'annotazione @Named). Consente inoltre a diversi moduli di collaborare ai servizi di contribuzione all'iniettore (lavagna).

Spring è simile, ogni file XML di contesto (ad esempio) può contribuire e utilizzare oggetti dal contesto Spring (lavagna).

OSGi e il suo registro di servizio sono un altro esempio di implementazione di una lavagna. Ecco una descrizione di come OSGi utilizza e supporta il modello di lavagna per la sua inversione di controllo della gestione degli eventi nei sistemi basati su OSGi

Ecco un tutorial sulla relazione tra Spring dynamic modules, OSGi e il pattern di lavagna (pagina 51).

La mia esperienza è che Guice in particolare è anche molto potente per supportare la propria implementazione del modello di lavagna. Se la maggior parte dei tuoi oggetti viene iniettata dal Guice Injector (lavagna bianca), è facile iniettarli con qualsiasi altra lavagna di cui una particolare classe ha bisogno. In questo modo puoi eseguire il bootstrap di una lavagna bianca specifica (ad esempio una contenente informazioni sul tuo dominio) utilizzando la lavagna bianca per l'architettura dell'applicazione Guice. (Puoi farlo anche con Spring, OSGi o molti altri anche se forse non direttamente).

    
risposta data 16.02.2012 - 13:18
fonte
2

Bene, i modelli di design sono esattamente questo; schemi concettuali per lo sviluppo di algoritmi, non necessariamente implementazioni di detto modello che funzionano nel caso generale. Pertanto, le librerie che forniscono funzionalità "built-in" possono utilizzare un particolare modello e possono persino essere esempi brillanti dell'uso di detto pattern, ma non sono THE pattern. Non hai bisogno di una classe StrategyProvider che possa essere configurata per soddisfare qualsiasi esigenza, devi solo definire un insieme di classi e strutturarle per seguire il modello di strategia.

L'idea è intrigante. Sembra che funzioni bene per l'organizzazione dei documenti, i diagrammi di flusso, i social network, ecc. Tuttavia, la sua implementazione in ciascuno di questi scenari sarebbe molto diversa e, mentre si sovrappone, potrebbe essere impossibile creare un'implementazione che soddisfi i requisiti requisiti di tutti questi scenari, senza esporre "effetto piattaforma interna" (un oggetto / libreria / applicazione così complesso e configurabile che diventa fondamentalmente una reimplementazione dell'IDE utilizzato per costruirlo).

    
risposta data 02.02.2012 - 20:51
fonte
0

OpeBBS (Open BlackBoard System) si presenta come un'implementazione Java per supportare l'utilizzo del pattern Blackboard.

Dal loro sito web :

OpenBBS is an open and extensible blackboard system for the development of flexible workflows. The flexibility is achieved through adoption of the blackboard pattern. OpenBBS is modular and embeddable which makes it a lightwheight solution for workflows.

L'origine, jar e javadoc possono essere trovati su Sourceforge . Javadoc sembra menzionare molte delle classi che ti aspetteresti (Blackboard, BlackboardControl, ControlPlan, KnowledgeSource, ...).

L'unico lato negativo è che l'ultima (e unica?) versione sembra essere del 2007.

    
risposta data 05.04.2017 - 12:23
fonte

Leggi altre domande sui tag