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/
Jawaban:
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).
sumber
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).
sumber
OpeBBS (Open BlackBoard System) terlihat seperti implementasi Java untuk mendukung penggunaan pola Blackboard.
Dari situs web mereka :
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.
sumber