v2 PENTING ada di sini. Ini adalah perubahan besar. Rilis v1 terakhir adalah v1.4.0
DynaMix ( Dynamic Mixins ) adalah alternatif dari pemrograman berorientasi objek dan polimorfisme dinamis. Ini memungkinkan pengguna membuat dan memodifikasi objek polimorfik pada saat run time. Bahasa target utamanya adalah C++, tetapi C juga didukung.
Perpustakaan adalah sarana untuk menciptakan arsitektur proyek daripada mencapai tujuannya. Ini membantu dengan ekstensibilitas , keterbacaan , skalabilitas dan interoperabilitas . Ini berfokus pada kinerja maksimal dan overhead memori minimal .
DynaMix berlaku untuk arsitektur perangkat lunak sistem dengan objek kompleks termasuk, namun tidak terbatas pada:
Pustaka menggunakan tipe dynamix::object
sebagai placeholder, yang instance-nya dapat diperluas dengan kelas-kelas yang sudah ada (mixin), sehingga menyediakan instance tertentu dengan fitur mixin dari semua tipe tersebut. Kemungkinan tipe fitur mixin yang paling penting adalah pesan: objek fungsional yang dalam istilah C++-OOP dapat dianggap sebagai metode. Fitur Mixin dapat diganti dan menggunakan pengikatan yang terlambat dan pengiriman tunggal. Unicast dan multicast dimungkinkan.
Berikut adalah contoh kecil tampilan kode menggunakan perpustakaan:
// 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
Berikut adalah beberapa fitur utama perpustakaan:
std::polymorphic_allocator
untuk memungkinkan penyesuaian alokasi dan mencapai lokalitas cache di bagian penting kodestd::function
Proyek berikut diketahui menggunakan DynaMix sebagai bagian penting dari arsitektur perangkat lunak mereka:
Dokumentasi adalah bagian dari repo di direktori doc/.
Kontribusi dalam bentuk isu dan permintaan penarikan dipersilahkan.
Perangkat lunak ini didistribusikan di bawah Lisensi Perangkat Lunak MIT.
Lihat file yang menyertai LISENSI atau salin di sini.
Hak Cipta © 2013-2024 Borislav Stanimirov, Zahary Karadjov
.
Logo DynaMix dilisensikan di bawah Lisensi Internasional Creative Commons Attribution 4.0. Hak Cipta © 2018 area55git
DynaMix v2 adalah penulisan ulang yang lengkap dan meskipun memiliki ide yang sama dengan v1, ia tidak kompatibel dengannya, dan memiliki antarmuka yang berbeda, dan implementasi yang berbeda untuk sebagian besar fitur, dan terminologi yang berbeda untuk beberapa fitur.
Rilis terakhir DynaMix v1 adalah v1.4.0. Dokumentasi tersedia di sini
Daftar perbedaan paling menonjol antara v1 dan v2 dapat ditemukan di sini.
DynaMix awalnya dikembangkan sebagai Boost.Mixin tetapi sekarang menjadi perpustakaan terpisah yang tidak bergantung pada Koleksi perpustakaan Boost.