重要v2 在這裡。這是一個很大的改變。最後的 v1 版本是 v1.4.0
DynaMix(動態混合)是物件導向程式設計和動態多態性的另一種選擇。它允許用戶在運行時組合和修改多態物件。主要目標語言是C++,但也支援C。
庫是創建專案架構的一種手段,而不是實現其目的。它有助於提高可擴展性、可讀性、可擴展性和互通性。它側重於最大性能和最小記憶體開銷。
DynaMix 適用於具有複雜物件的系統的軟體架構,包括但不限於:
本函式庫使用dynamix::object
類型作為佔位符,其實例可以使用現有類別(mixin)進行擴展,從而為特定實例提供所有這些類型的mixin 功能。 mixin 功能中最重要的類型可能是訊息:在 C++-OOP 術語中可以將函數物件視為方法。 Mixin 功能是可重寫的,並使用後期綁定和單一調度。單播和多播都是可能的。
以下是使用該庫的程式碼的一個小範例:
// 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 作為其軟體架構的關鍵部分:
該文件是 doc/ 目錄中儲存庫的一部分。
歡迎以問題和拉取請求的形式做出貢獻。
該軟體根據 MIT 軟體許可證分發。
請參閱隨附的許可證文件或在此處複製。
版權所有 © 2013-2024 鮑里斯拉夫·斯坦尼米羅夫、扎哈里·卡拉喬夫
。
DynaMix 標誌根據 Creative Commons Attribution 4.0 International License 授權。版權所有 © 2018area55git
DynaMix v2 是完全重寫的,雖然它與 v1 具有相同的想法,但與 v1 不相容,並且具有不同的介面、大多數功能的不同實現以及某些功能的不同術語。
DynaMix v1 的最後一個版本是 v1.4.0。該文件可在此處取得
可以在此處找到 v1 和 v2 之間最顯著差異的清單。
DynaMix 最初是作為 Boost.Mixin 開發的,但現在是一個獨立的函式庫,不依賴 Boost 函式庫集合。