중요 v2가 여기에 있습니다. 그것은 큰 변화이다. 마지막 v1 릴리스는 v1.4.0이었습니다.
DynaMix( Dynamic Mixins )는 객체 지향 프로그래밍과 동적 다형성에 대한 대안입니다. 이를 통해 사용자는 런타임에 다형성 개체를 구성하고 수정할 수 있습니다. 주요 대상 언어는 C++이지만 C도 지원됩니다.
라이브러리는 목적을 달성하기보다는 프로젝트의 아키텍처를 생성하는 수단입니다. 확장성 , 가독성 , 확장성 및 상호 운용성 에 도움이 됩니다. 이는 최대 성능 과 최소 메모리 오버헤드 에 중점을 둡니다.
DynaMix는 다음을 포함하되 이에 국한되지 않는 복잡한 개체가 있는 시스템의 소프트웨어 아키텍처에 적용 가능합니다.
라이브러리는 dynamix::object
유형을 자리 표시자로 사용합니다. 이 인스턴스는 기존 클래스(믹스인)로 확장될 수 있으므로 특정 인스턴스에 모든 유형의 믹스인 기능을 제공합니다. 아마도 가장 중요한 유형의 믹스인 기능은 메시지일 것입니다. C++-OOP 용어로 메소드로 생각할 수 있는 기능적 객체입니다. 믹스인 기능은 재정의 가능하며 후기 바인딩 및 단일 디스패치를 사용합니다. 유니캐스트와 멀티캐스트가 가능합니다.
다음은 라이브러리를 사용하는 코드의 작은 예입니다.
// 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 소프트웨어 라이선스에 따라 배포됩니다.
함께 제공되는 LICENSE 파일을 참조하거나 여기에서 복사하세요.
저작권 © 2013-2024 Borislav Stanimirov, Zahary Karadjov
.
DynaMix 로고는 Creative Commons Attribution 4.0 국제 라이선스에 따라 라이선스가 부여됩니다. 저작권 © 2018 Area55git
DynaMix v2는 완전히 재작성되었으며 v1과 동일한 아이디어를 가지고 있지만 호환되지 않으며 대부분의 기능에 대해 다른 인터페이스와 구현이 다르며 일부 기능에 대해 다른 용어가 있습니다.
DynaMix v1의 마지막 릴리스는 v1.4.0입니다. 문서는 여기에서 확인할 수 있습니다.
v1과 v2의 가장 눈에 띄는 차이점 목록은 여기에서 확인할 수 있습니다.
DynaMix는 처음에는 Boost.Mixin으로 개발되었지만 현재는 Boost 라이브러리 컬렉션에 의존하지 않는 별도의 라이브러리입니다.