Ich arbeite zur Zeit an einem etwas größeren Spiel.
Da es viele verschiedene Objekte im Spiel geben wird schrieb ich ein Entity-Component-System welches sich um die Objekte im Spiel kümmern soll.
Das Rendering wird von einer Klasse namens RenderSystem übernommen welche ein Singleton ist.
Die RenderComponents werden folgender Weiße im RenderSystem registriert:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
|
Player::Player() : Entity("Player")
{
staticSpriteRenderer = std::shared_ptr<Component>(new StaticSpriteRenderer("Data/link.png"));
RenderSystem::Instance()->Register(staticSpriteRenderer);
AddComponent(staticSpriteRenderer);
}
|
In der Register Funktion des RenderSystems wird nur die Komponente in einen std::vector eingetragen, der beim Rendern durch alle eingetragenen Komponenten iteriert und sie der Reihe nach rendert.
Ich weiß, dass Singletons eher unbeliebt in der Softwareentwicklung sind.
Gibt es denn irgendwelche Nachteile einer solchen Implementierung?
Falls ja, wie würdet ihr dieses Problem lösen?
Danke im Voraus!