重要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 库集合。