Blackboard Desen modern Java uygulaması?


11

"Pragmatik Programcı" bölümünde ayrıntılı olarak açıklanan Blackboard Desen Java ile pratik modern bir uygulama için yer var mı ? Bu kavramın uygulanmasına yardımcı olmaya çalışan herhangi bir kütüphane var mı? Mevcut yazılım topluluğunda (özellikle Java) bu model üzerinde genel fikir birliği nedir?

Fikir ilgi çekici olsa da, kitabın bu bölümünün modası geçmiş olabileceğini hissediyorum.

Bu konsepte aşina değilseniz: http://flylib.com/books/en/1.315.1.55/1/


Bunu da kontrol etmek isteyebilirsiniz: stackoverflow.com/questions/1204667/…
Steven Evers

Sorudaki ilk bağlantı koptu. İkincisi, diğer birkaç desende makul derinliğe giren, daha sonra Blackboard'ları ilişkili olarak listeleyen, ancak bunlar hakkında hiçbir şey söylemeyen uzun bir makaledir. Terimden haberdar olan biri lütfen soruyu düzenleyebilir ve kısa bir tanım veya örnek ekleyebilir mi?
Jules

Yanıtlar:


6

Benim düşünceme göre, modern Bağımlılık Enjeksiyonu çerçevelerinin çoğu, uygulama mimarisi için beyaz tahta deseninin aşağı yukarı bir uygulamasıdır. Özellikle Google Guice , oluşturduğu nesnelere çeşitli yollarla ek açıklama ekleyerek (@Named ek açıklamasını kullanarak ada dahil) "Enjektör" den (veya istediğiniz gibi beyaz tahta) bir nesnenin belirli örneklerini almanıza olanak tanır . Ayrıca farklı modüllerin Enjektöre (beyaz tahta) hizmetlerde katkıda bulunmalarına yardımcı olur.

Yay benzerdir, her bağlam XML dosyası (örneğin), Bahar bağlamından (beyaz tahta) nesnelere katkıda bulunabilir ve bunları kullanabilir.

OSGi ve hizmet kaydı, beyaz tahta uygulamasına bir başka örnektir. İşte tanımıdır nasıl OSGi kullanımlar ve beyaz tahta deseni destekler kontrolün ters OSGi tabanlı sistemlerde olay elleçleme

İşte Spring dinamik modülleri, OSGi ve beyaz tahta deseni arasındaki ilişki hakkında bir öğretici makale (sayfa 51).

Deneyimlerim, özellikle Guice'in beyaz tahta desenini kendi uygulamanızı desteklemek için çok güçlü olması. Nesnelerinizin çoğu Guice Injector'dan (beyaz tahta) enjekte ediliyorsa, belirli bir sınıfın ihtiyaç duyduğu diğer beyaz tahtalara enjekte etmek kolaydır. Böylece, Guice uygulama mimarisi beyaz tahtasını kullanarak belirli bir beyaz tahtayı (örneğin alanınız hakkındaki gerçekleri içeren bir tahta) önyükleyebilirsiniz. (Bahar, OSGi veya diğer birçoklarıyla da benzer şekilde yapabilirsiniz, ancak doğrudan olmasa da).


3
Başka birinin bunu merak etmesi durumunda, yazı tahtaları ve yazı tahtaları birbirinin yerine geçebilir terimler gibi görünüyor. Beyaz tahtalar Barbara Liskov'un onlara söylediği şeydir, ancak bu terim yazı tahtaları lehine (çoğunlukla) kullanımdan çıkmış gibi görünmektedir.
Wouter

2

Tasarım kalıpları tam olarak bu; algoritmaların geliştirilmesi için kavramsal örüntüler, genel durumda çalışan söz konusu örüntünün uygulanması gerekmez. Bu nedenle, "yerleşik" işlevsellik sağlayan kütüphaneler belirli bir desen kullanabilir ve hatta söz konusu modelin kullanımının parlak örnekleri olabilir, ancak bunlar desen değildir. Herhangi bir ihtiyacı karşılayacak şekilde yapılandırılabilecek bir StrategyProvider sınıfına ihtiyacınız yoktur, sadece bir sınıf kümesi tanımlar ve bunları Strateji modelini takip edecek şekilde yapılandırırsınız.

Fikir ilgi çekicidir. Belge organizasyonu, akış şeması, sosyal ağlar vb. İçin iyi çalışır gibi görünüyor. Ancak, bu senaryoların her birinde uygulanması oldukça farklı olacaktır ve çakışma olsa bile, tüm bu senaryoların gereksinimleri, "iç platform etkisi" göstermeden (temel olarak onu oluşturmak için kullanılan IDE'nin yeniden uygulanması haline gelecek kadar karmaşık ve yapılandırılabilir bir nesne / kütüphane / uygulama).


1
Bence perakendeciler biraz fazla hevesliydi. Bunu bir tasarım modelinden çok bir mimari model olarak düşünürdüm. SOA ile Fabrika Deseninden daha uyumlu. Belki 'desen' kelimesini kullanmamalıydım
smp7d

Sanırım cevabım duruyor; Blackboard, gereksinimlere özgü uygulamalar oluşturmak için kullanılan bir "model" dir ve modelin kendisinin genel durum uygulaması olması amaçlanmamıştır. SOA örneğiniz hala sadece bir kavramdır; amaçlanan kullanımın ne olacağını bilmeden anlamlı bir "SOA motoru" oluşturamazsınız (Microsoft'un WCF'si "SOA motoru" olarak düşünülebilir, ancak gerçekten iletişimi basitleştirmek için bir SOA tasarımına uygulanabilen bir proxy mimarisidir. detaylar; sizin uygulamanız ve iç platformdaki sınırlarınız olmadan işe yaramaz, ancak .NET, bu yüzden bunu bekliyoruz).
KeithS

Cevabınız kesinlikle haksız değil. Bununla birlikte, bu modelin kullanımına yardımcı olan teknolojiler olabilir. Tüm gereksinimleri karşılamak için web hizmeti işlevselliğinin birleşik bir uygulaması olmadığı için Java'da bu alanda yardımcı olacak kitaplık ve paket olmadığı anlamına gelmez. Yine de, bunu daha açık hale getirmek için sorumu düzenleyeceğim. Teşekkürler.
smp7d

0

OpeBBS (Açık BlackBoard Sistemi), Blackboard deseninin kullanımını destekleyen bir Java uygulaması gibi görünür.

Onların itibaren web :

OpenBBS, esnek iş akışlarının geliştirilmesi için açık ve genişletilebilir bir yazı tahtası sistemidir. Esneklik, tahta deseninin benimsenmesi ile elde edilir. OpenBBS modüler ve gömülebilirdir, bu da onu iş akışları için bir hafif ağırlık çözümü haline getirir.

Kaynak, kavanoz ve javadoc , Sourceforge'da bulunabilir . Javadoc, beklediğiniz sınıfların çoğundan bahsediyor gibi görünüyor (Blackboard, BlackboardControl, ControlPlan, KnowledgeSource, ...).

Tek dezavantajı, en son (ve sadece?) Sürümün 2007'den itibaren görünmesidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.