Mir*_*pas 5 c++ oop design-patterns
我有一个非常简单的游戏引擎.它使用了几个单例(我会列举其中的一些).
Resource Manager
Render Engine
Events Manager
Factory
etc
Run Code Online (Sandbox Code Playgroud)
这些单身人士从一个到另一个有很多电话.我将采用事件管理器示例用法:
EventsManager->RegisterListener(this, &SomeClass::SomeMethod);(事件类型由SomeMethod参数推导)EventsManager->PushEvent(SomeEvent);在一些同步之后,事件将到达所有侦听器.当EventsManager是singleton时,这是一个非常简单的用法.
类似的行为与其他单身人士有关.我想删除单例,但我的主要问题是我想从现在的"用户观点"保持代码简单易用.我阅读了一些这样做的技巧,但大多数使类的初始化/使用更加复杂.我知道这个主题在SO上被多次讨论,但没有答案适合我的编程理念 - 尽可能保持一切尽可能简单.
我不希望我的类有复杂的定义/初始化,如:
SomeClass<EventManager, RenderEngine,...>
Run Code Online (Sandbox Code Playgroud)
要么
SomeClass::SomeClass(EventsManager, RenderEngine...)
Run Code Online (Sandbox Code Playgroud)
你能就这个话题给我一些建议吗?
您可以有一个全局“游戏”对象,它创建当前单例的每个类的实例
对于您的EventManager的具体示例;您的 Listener 基类可以提供派生类可以调用的注册方法和推送方法的实现。
骨架定义:
class Listener
{
public:
virtual void ReceiveMessage( ... ) = 0;
protected:
void Register()
{
GetEventManagerSomehow()->RegisterListener( this, etc );
}
void PushEvent( etc )
{
GetEventManagerSomehow()->PushEvent( etc );
}
}
Run Code Online (Sandbox Code Playgroud)