Implementasi Java Blackboard Pattern yang modern?


11

Apakah ada ruang untuk aplikasi modern praktis di Java dari Blackboard Pattern yang dirinci dalam "The Pragmatic Programmer" ? Apakah ada perpustakaan tertentu yang mencoba membantu dalam penerapan konsep ini? Apa konsensus umum tentang pola ini dalam komunitas perangkat lunak saat ini (khususnya Jawa)?

Meskipun idenya menarik, saya merasa bahwa bagian buku ini mungkin sudah ketinggalan zaman.

Jika Anda tidak terbiasa dengan konsep ini: http://flylib.com/books/en/1.315.1.55/1/


Mungkin ingin memeriksa ini juga: stackoverflow.com/questions/1204667/…
Steven Evers

Tautan pertama dalam pertanyaan terputus. Yang kedua adalah artikel panjang yang masuk ke kedalaman yang masuk akal pada beberapa pola lain, kemudian daftar Blackboards sebagai terkait, tetapi tidak mengatakan apa-apa tentang mereka. Bisakah seseorang yang akrab dengan istilah ini silakan mengedit pertanyaan dan menambahkan definisi atau contoh singkat?
Jules

Jawaban:


6

Pendapat saya adalah bahwa banyak kerangka kerja Dependency Injection modern lebih atau kurang merupakan implementasi dari pola papan tulis untuk arsitektur aplikasi. Google Guice khususnya memungkinkan Anda untuk mendapatkan instance objek tertentu dari "Injector" (atau papan tulis yang Anda suka menyebutnya) dengan membubuhi keterangan objek yang dibuatnya dalam beberapa cara (termasuk dengan menggunakan anotasi @Nama) . Ini juga memungkinkan modul yang berbeda untuk berkolaborasi dalam memberikan layanan ke Injector (papan tulis).

Pegas mirip, setiap file XML konteks (misalnya) dapat berkontribusi dan menggunakan objek dari konteks Spring (papan tulis).

OSGi dan registri layanannya adalah contoh lain dari implementasi papan tulis. Berikut ini adalah deskripsi tentang bagaimana OSGi menggunakan dan mendukung pola papan tulis untuk inversi kontrol penanganan acara dalam sistem berbasis OSGi

Berikut adalah makalah tutorial tentang hubungan antara modul dinamis Spring, OSGi dan pola papan tulis (halaman 51).

Pengalaman saya adalah bahwa Guice khususnya juga sangat kuat untuk mendukung penerapan pola papan tulis Anda sendiri. Jika sebagian besar benda Anda disuntikkan dari Guice Injector (papan tulis) maka mudah untuk menyuntikkannya dengan papan tulis lain yang dibutuhkan kelas tertentu. Jadi Anda dapat mem-bootstrap papan tulis tertentu (mis. Yang berisi fakta tentang domain Anda) menggunakan papan tulis arsitektur aplikasi Guice. (Anda dapat melakukan hal yang sama dengan Spring, OSGi, atau banyak yang lain walaupun mungkin tidak secara langsung).


3
Jika ada orang lain yang bertanya-tanya tentang hal ini, papan tulis dan papan tulis tampaknya adalah istilah yang dapat dipertukarkan. Papan tulis adalah apa yang disebut Barbara Liskov, tetapi istilah ini tampaknya (sebagian besar) tidak digunakan, lebih disukai papan tulis.
Wouter

2

Nah, pola desain persis seperti itu; pola konseptual untuk pengembangan algoritma, belum tentu implementasi pola tersebut yang bekerja dalam kasus umum. Dengan demikian, perpustakaan yang menyediakan fungsionalitas "built-in" dapat menggunakan pola tertentu, dan bahkan mungkin menjadi contoh penggunaan pola tersebut, tetapi itu bukan pola. Anda tidak memerlukan kelas StrategyProvider yang dapat dikonfigurasikan untuk memenuhi kebutuhan apa pun, Anda cukup mendefinisikan satu set kelas dan menyusunnya untuk mengikuti pola Strategi.

Idenya menarik. Sepertinya itu akan bekerja dengan baik untuk organisasi dokumen, diagram alur, jejaring sosial, dll. Namun, penerapannya di masing-masing skenario akan sangat berbeda, dan sementara ada tumpang tindih mungkin tidak mungkin untuk membuat satu implementasi yang memenuhi persyaratan semua skenario ini, tanpa menunjukkan "efek platform-dalam" (objek / perpustakaan / aplikasi yang begitu rumit dan dapat dikonfigurasi sehingga pada dasarnya menjadi implementasi ulang dari IDE yang digunakan untuk membangunnya).


1
Saya pikir retaggers menjadi sedikit terlalu bersemangat. Saya akan menganggap ini lebih sebagai pola arsitektur daripada pola desain. Lebih sesuai dengan SOA daripada Pola Pabrik. Mungkin saya seharusnya tidak menggunakan kata 'pattern'
smp7d

Saya pikir jawaban saya tetap; Blackboard adalah "pola" yang digunakan untuk membuat implementasi persyaratan khusus, dan pola itu sendiri tidak dimaksudkan untuk memiliki implementasi kasus umum. Contoh Anda SOA masih hanya sebuah konsep; Anda tidak dapat membangun "mesin SOA" yang berarti tanpa mengetahui apa yang akan digunakan (WCF Microsoft mungkin dianggap sebagai "mesin SOA", tetapi sebenarnya itu adalah arsitektur proxy yang dapat diterapkan pada desain SOA untuk menyederhanakan komunikasi. rincian; tidak ada gunanya tanpa implementasi Anda dan berbatasan dengan platform dalam, tapi itu. NET jadi kami harapkan itu).
KeithS

Jawaban Anda jelas bukan tanpa alasan. Namun, mungkin ada teknologi yang membantu dalam penggunaan pola ini. Hanya karena tidak ada implementasi terpadu dari fungsi layanan web untuk memenuhi semua persyaratan, tidak berarti bahwa tidak ada perpustakaan dan paket di Jawa untuk membantu di area ini. Namun demikian, saya akan mengedit pertanyaan saya untuk membuatnya lebih jelas. Terima kasih.
smp7d

0

OpeBBS (Open BlackBoard System) terlihat seperti implementasi Java untuk mendukung penggunaan pola Blackboard.

Dari situs web mereka :

OpenBBS adalah sistem papan tulis yang terbuka dan dapat dikembangkan untuk pengembangan alur kerja yang fleksibel. Fleksibilitas dicapai melalui adopsi pola papan tulis. OpenBBS adalah modular dan dapat disematkan yang membuatnya menjadi solusi cahaya yang ringan untuk alur kerja.

Sumber, toples, dan javadoc dapat ditemukan di Sourceforge . Javadoc tampaknya menyebutkan banyak kelas yang Anda harapkan (Blackboard, BlackboardControl, ControlPlan, KnowledgeSource, ...).

Satu-satunya downside adalah bahwa itu rilis terbaru (dan hanya?) Tampaknya berasal dari 2007.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.