สิ่งสำคัญ v2 อยู่ที่นี่ มันเป็นการเปลี่ยนแปลงครั้งใหญ่ รุ่น v1 ล่าสุดคือ v1.4.0
DynaMix ( Dynamic Mixins ) เป็นอีกทางเลือกหนึ่งของการเขียนโปรแกรมเชิงวัตถุและความหลากหลายแบบไดนามิก ช่วยให้ผู้ใช้สามารถเขียนและแก้ไขวัตถุ polymorphic ในขณะดำเนินการได้ ภาษาเป้าหมายหลักคือ C++ แต่ก็รองรับ C เช่นกัน
ห้องสมุดเป็นเครื่องมือในการสร้าง สถาปัตยกรรม ของโครงการมากกว่าที่จะบรรลุวัตถุประสงค์ ช่วยใน การขยาย ความสามารถ ในการอ่าน การขยายขนาด และ ความสามารถในการทำงานร่วมกัน โดยมุ่งเน้นไปที่ ประสิทธิภาพสูงสุด และ ค่าใช้จ่ายหน่วยความจำขั้นต่ำ
DynaMix ใช้ได้กับสถาปัตยกรรมซอฟต์แวร์ของระบบที่มีออบเจ็กต์ที่ซับซ้อน ซึ่งรวมถึงแต่ไม่จำกัดเพียง:
ไลบรารีใช้ประเภท dynamix::object
เป็นตัวยึดตำแหน่ง ซึ่งสามารถขยายอินสแตนซ์ด้วยคลาสที่มีอยู่ (มิกซ์อิน) ได้ ดังนั้นจึงให้อินสแตนซ์เฉพาะที่มี คุณสมบัติมิกซ์อิน ของประเภทเหล่านั้นทั้งหมด ประเภทที่สำคัญที่สุดของ คุณสมบัติมิกซ์อิน คือข้อความ: ออบเจ็กต์การทำงานซึ่งในเงื่อนไข C++-OOP สามารถถือเป็นวิธีการได้ คุณลักษณะของ Mixin สามารถเอาชนะได้ และใช้การเชื่อมโยงล่าช้าและการจัดส่งแบบเอกพจน์ มีทั้งแบบ Unicast และ Multicast
นี่คือตัวอย่างเล็กๆ น้อยๆ ของโค้ดที่อาจมีลักษณะเหมือนการใช้ไลบรารี:
// assuming my_objects.get_ally(0); is a way to get an ally to the
// main character in a game
dynamix::object& obj = my_objects.get_ally( 0 );
// now let's make the object think some positive thoughts about the
// main character
think (obj); // C++ doesn't allow us to have obj.think().
// DynaMix's messages are like standalone functions
// composition
mutate (obj, dynamix::add<flying_creature>());
// object can now respond to fly()
fly (obj); // ...instead of obj.fly()
// mutation
mutate (obj
, dynamix::remove<ally>()
, dynamix::add<enemy>()
);
think (obj); // the same object now thinks negative thoughts about the main
// character, since it's no longer an ally, but an enemy
นี่คือคุณสมบัติหลักบางประการของห้องสมุด:
std::polymorphic_allocator
เพื่ออนุญาตการจัดสรรแบบละเอียดและรับตำแหน่งแคชในส่วนสำคัญของโค้ดstd::function
เป็นที่ทราบกันว่าโปรเจ็กต์ต่อไปนี้ใช้ DynaMix เป็นส่วนสำคัญของสถาปัตยกรรมซอฟต์แวร์:
เอกสารประกอบเป็นส่วนหนึ่งของ repo ในไดเร็กทอรี doc/
ยินดีมีส่วนร่วมในรูปแบบของปัญหาและการร้องขอดึง
ซอฟต์แวร์นี้เผยแพร่ภายใต้ลิขสิทธิ์ซอฟต์แวร์ MIT
ดูไฟล์ใบอนุญาตที่แนบมาหรือคัดลอกที่นี่
ลิขสิทธิ์© 2013-2024 Borislav Stanimirov, Zahary Karadjov
-
โลโก้ DynaMix ได้รับอนุญาตภายใต้ Creative Commons Attribution 4.0 International License ลิขสิทธิ์ © 2018 area55git
DynaMix v2 เป็นการเขียนใหม่ทั้งหมด และถึงแม้จะมีแนวคิดเดียวกันกับ v1 แต่ก็เข้ากันไม่ได้ และมีอินเทอร์เฟซที่แตกต่างกัน และการใช้งานฟีเจอร์ส่วนใหญ่ที่แตกต่างกัน และคำศัพท์เฉพาะสำหรับบางรายการ
DynaMix v1 รุ่นล่าสุดคือ v1.4.0 เอกสารมีอยู่ที่นี่
ดูรายการความแตกต่างที่เห็นได้ชัดเจนที่สุดระหว่าง v1 และ v2 ได้ที่นี่
DynaMix ได้รับการพัฒนาครั้งแรกในชื่อ Boost.Mixin แต่ปัจจุบันเป็นไลบรารีแยกต่างหากที่ไม่ขึ้นอยู่กับ Boost libraries Collection