【发布时间】:2011-07-30 11:15:01
【问题描述】:
我的游戏库由一系列模块组成,按类组织,在需要时创建、更新和交互。
一些示例可能是:CWindowManager、CGraphicsManager、CPhysicsManager 等等。
不得不说我目前对它们使用全局指针 (extern CWindowManager* g_WindowManager;),我很惭愧,而且我知道这可能是一件坏事。
无论如何,问题是这些模块需要动态地创建和删除,当然是按照正确的顺序。还有一个问题是CPhysicsManager这样的模块是依赖于场景的,所以在切换场景时会被删除,然后重新创建。
现在,我想放弃使用全局变量来处理我的游戏中的模块。
我不害怕重构,但我真的想不出什么是全局变量的最佳替代方案。
我考虑过创建一个 CModuleManager 类并将模块的实例作为成员存储在其中,然后从 CModule 基类派生。虽然我真的想不出这将如何详细工作。
这似乎是软件开发,尤其是游戏开发中的常见问题,所以:
- 与简单地使用全局指针相比,管理模块的最佳选择是什么?
【问题讨论】:
-
看起来你的问题是特定于 C++ 的,所以考虑重新标记它,C++ 人可能会帮助你
标签: c++ design-patterns modularity coupling