การนำ Java ไปใช้กับรูปแบบ Blackboard?


11

มีที่ว่างสำหรับแอปพลิเคชั่นที่ใช้งานได้จริงใน Java ของรูปแบบ Blackboard ที่มีรายละเอียดใน"The Pragmatic Programmer"หรือไม่? มีห้องสมุดใดที่พยายามช่วยเหลือในการนำแนวคิดนี้ไปใช้หรือไม่? ฉันทามติทั่วไปเกี่ยวกับรูปแบบนี้ในชุมชนซอฟต์แวร์ปัจจุบัน (โดยเฉพาะ Java) คืออะไร?

แม้ว่าความคิดจะน่าสนใจ แต่ฉันก็รู้สึกว่าหนังสือเล่มนี้อาจล้าสมัย

ในกรณีที่คุณไม่คุ้นเคยกับแนวคิดนี้: http://flylib.com/books/en/1.315.1.55/1/


อาจต้องการตรวจสอบสิ่งนี้เช่นกัน: stackoverflow.com/questions/1204667/…
Steven Evers

ลิงก์แรกในคำถามใช้งานไม่ได้ บทความที่สองเป็นบทความที่มีความยาวพอสมควรซึ่งมีความลึกพอสมควรในรูปแบบอื่น ๆ แล้วแสดงว่ากระดานดำมีความเกี่ยวข้อง แต่ไม่ได้พูดอะไรเลย มีใครบ้างที่คุ้นเคยกับคำว่าโปรดแก้ไขคำถามและเพิ่มคำนิยามหรือตัวอย่าง?
จูลส์

คำตอบ:


6

ความคิดเห็นของฉันคือกรอบการฉีดพึ่งพาที่ทันสมัยจำนวนมากมีการใช้รูปแบบไวท์บอร์ดสำหรับสถาปัตยกรรมแอปพลิเคชันมากขึ้นหรือน้อยลง Google Guiceโดยเฉพาะช่วยให้คุณรับอินสแตนซ์ของวัตถุจาก "Injector" (หรือไวท์บอร์ดตามที่คุณอาจต้องการเรียกใช้) โดยการใส่คำอธิบายประกอบวัตถุที่สร้างขึ้นในหลายวิธี (รวมถึงชื่อโดยใช้คำอธิบายประกอบ @Named) . นอกจากนี้ยังช่วยให้โมดูลต่างๆสามารถทำงานร่วมกันในการให้บริการแก่ Injector (ไวท์บอร์ด)

Spring มีลักษณะคล้ายกันแต่ละไฟล์ XML บริบท (ตัวอย่าง) สามารถมีส่วนร่วมและใช้วัตถุจากบริบท Spring (ไวท์บอร์ด)

OSGi และ Service Registry เป็นอีกตัวอย่างหนึ่งของการติดตั้งไวท์บอร์ด นี่คือคำอธิบายถึงวิธีที่ OSGi ใช้และสนับสนุนรูปแบบไวท์บอร์ดสำหรับการกลับรายการของการควบคุมการจัดการเหตุการณ์ในระบบที่ใช้ OSGi

นี่คือเอกสารการสอนเกี่ยวกับความสัมพันธ์ระหว่างโมดูล Spring ไดนามิก OSGi และรูปแบบไวท์บอร์ด (หน้า 51)

ประสบการณ์ของฉันคือ Guice โดยเฉพาะอย่างยิ่งยังมีประสิทธิภาพมากสำหรับการสนับสนุนการใช้รูปแบบไวท์บอร์ดของคุณเอง หากส่วนใหญ่ของวัตถุของคุณถูกฉีดจาก Guice Injector (ไวท์บอร์ด) แล้วมันง่ายต่อการฉีดกับไวท์บอร์ดอื่น ๆ ตามความต้องการของชั้นเรียน ดังนั้นคุณสามารถบูตกระดานไวท์บอร์ดเฉพาะ (เช่นกระดานที่มีข้อมูลเกี่ยวกับโดเมนของคุณ) โดยใช้ไวท์บอร์ดสถาปัตยกรรมแอปพลิเคชั่น Guice (คุณสามารถทำเช่นเดียวกันกับ Spring, OSGi หรืออื่น ๆ ได้เช่นกันแม้ว่าอาจจะไม่ตรง)


3
ในกรณีที่มีคนอื่นสงสัยเกี่ยวกับเรื่องนี้กระดานไวท์บอร์ดและกระดานดำดูเหมือนจะเป็นคำที่ใช้แทนกันได้ กระดานไวท์บอร์ดเป็นสิ่งที่บาร์บาร่าลิสคอฟเรียกพวกเขา แต่คำนี้ดูเหมือนจะใช้งานไม่ได้ (ส่วนใหญ่) เพื่อประโยชน์ของกระดานดำ
Wouter

2

รูปแบบการออกแบบนั้นแน่นอน รูปแบบแนวคิดสำหรับการพัฒนาอัลกอริทึมไม่จำเป็นต้องใช้รูปแบบดังกล่าวที่ทำงานในกรณีทั่วไป ดังนั้นไลบรารีที่จัดเตรียมฟังก์ชันการทำงาน "ในตัว" อาจใช้รูปแบบเฉพาะและอาจเป็นตัวอย่างของการใช้รูปแบบดังกล่าว แต่อาจไม่ใช่รูปแบบ คุณไม่ต้องการคลาส StrategyProvider ที่สามารถกำหนดค่าให้ตรงกับความต้องการใด ๆ คุณเพียงแค่กำหนดชุดคลาสและจัดโครงสร้างคลาสเหล่านั้นให้เป็นไปตามรูปแบบกลยุทธ์

ความคิดที่น่าสนใจคือ ดูเหมือนว่าจะทำงานได้ดีสำหรับการจัดระเบียบเอกสาร, โฟลว์ชาร์ต, เครือข่ายสังคมออนไลน์ ฯลฯ อย่างไรก็ตามการใช้งานในแต่ละสถานการณ์จะแตกต่างกันมากและในขณะที่มีการทับซ้อนกัน ความต้องการของสถานการณ์เหล่านี้ทั้งหมดโดยไม่แสดง "เอฟเฟ็กต์ภายในแพลตฟอร์ม" (วัตถุ / ไลบรารี / แอปพลิเคชันที่ซับซ้อนและสามารถกำหนดค่าได้ว่าโดยทั่วไปจะเป็นการปรับใช้ IDE ที่ใช้ในการสร้าง)


1
ฉันคิดว่าผู้ตอบโต้มีความคลั่งไคล้เล็กน้อย ฉันจะพิจารณารูปแบบสถาปัตยกรรมนี้มากกว่ารูปแบบการออกแบบ สอดคล้องกับ SOA มากกว่ารูปแบบโรงงาน บางทีฉันไม่ควรใช้คำว่า 'pattern'
smp7d

ฉันคิดว่าคำตอบของฉันยืนอยู่; กระดานดำเป็น "รูปแบบ" ที่ใช้ในการสร้างการใช้งานเฉพาะตามความต้องการและรูปแบบนั้นไม่ได้มีวัตถุประสงค์เพื่อให้เกิดการใช้งานทั่วไป ตัวอย่างของ SOA ของคุณยังคงเป็นเพียงแนวคิด คุณไม่สามารถสร้าง "SOA engine" ที่มีความหมายได้โดยไม่ทราบว่าการใช้งานที่ตั้งใจจะเป็นอย่างไร (WCF ของ Microsoft อาจคิดว่าเป็น "SOA engine" แต่จริงๆแล้วมันเป็นสถาปัตยกรรมพร็อกซีที่สามารถใช้กับการออกแบบ SOA เพื่อทำให้การสื่อสารง่ายขึ้น รายละเอียดไม่มีประโยชน์หากไม่มีการติดตั้งและขอบบนแพลตฟอร์มภายใน แต่เป็น. NET ดังนั้นเราจึงคาดหวังไว้)
KeithS

คำตอบของคุณไม่แน่นอนหากไม่มีบุญ อย่างไรก็ตามอาจมีเทคโนโลยีที่ช่วยในการใช้รูปแบบนี้ เพียงเพราะไม่มีการใช้งานแบบรวมของฟังก์ชั่นบริการเว็บเพื่อตอบสนองความต้องการทั้งหมดไม่ได้หมายความว่าไม่มีไลบรารีและแพ็คเกจใน Java ที่จะช่วยในเรื่องนี้ อย่างไรก็ตามฉันจะแก้ไขคำถามของฉันเพื่อให้ชัดเจนยิ่งขึ้น ขอบคุณ
smp7d

0

OpeBBS (Open BlackBoard System) ดูเหมือนว่าการนำ Java ไปใช้เพื่อสนับสนุนการใช้งานของรูปแบบ Blackboard

จากเว็บไซต์ของพวกเขา:

OpenBBS เป็นระบบกระดานดำแบบเปิดและขยายได้สำหรับการพัฒนาเวิร์กโฟลว์ที่ยืดหยุ่น ความยืดหยุ่นนั้นเกิดจากการใช้รูปแบบกระดานดำ OpenBBS เป็นแบบแยกส่วนและฝังซึ่งทำให้โซลูชัน lightwheight สำหรับเวิร์กโฟลว์

แหล่งที่มาของขวดและ Javadoc สามารถพบได้บน Sourceforge Javadoc ดูเหมือนว่าจะกล่าวถึงคลาสที่คุณคาดหวัง (Blackboard, BlackboardControl, ControlPlan, KnowledgeSource, ... )

ข้อเสียเพียงอย่างเดียวคือมันเป็นรุ่นล่าสุด (และเท่านั้น?) ที่ดูเหมือนว่าจะมาจากปี 2007

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.