Моя игровая база состоит из серии модулей, организованных как классы, которые создаются, обновляются и взаимодействуют при необходимости.
Несколько примеров могут быть be: CWindowManager
, CGraphicsManager
, CPhysicsManager
и т. д.
Мне стыдно сказать, что в настоящее время я использую для них глобальные указатели ( extern CWindowManager * g_WindowManager;
), и я знаю, что это, вероятно, плохой поступок.
В любом случае, дело в том, что эти модули нужно создавать и удалять динамически, и что в правильный порядок конечно. Также существует проблема, что такие модули, как CPhysicsManager
, зависят от сцены, поэтому они удаляются при переключении сцены, а затем создаются заново.
Теперь я бы хотел отказаться от использования глобальных объектов для работы с модулями в моей игре.
Я не боюсь рефакторинга, но я действительно не могу придумать, что было бы лучшей альтернативой глобальным переменным.
Я подумал о создании класса CModuleManager и хранении экземпляров модули там как члены, которые затем являются производными от базового класса CModule. Хотя я не могу представить, как это будет работать в деталях.
Это похоже на обычную проблему при разработке программного обеспечения и особенно разработки игр, поэтому:
- Какой вариант управления модулями лучше всего по сравнению с простым с помощью глобальных указателей?