Singleton para jogos em C++

Olá pessoal, hoje vou compartilhar minha implementação de Singleton, segundo a Wikipédia Singleton é:

Singleton é um padrão de projeto de software (do inglês Design Pattern). Este padrão garante a existência de apenas uma instância de uma classe, mantendo um ponto global de acesso ao seu objeto.

Ou seja uma maneira elegante de utilizar objetos globais aos quais só tem uma única instância, o melhor exemplo disso seria a Câmera, o nó raiz da cena, ou qualquer outro objeto que tenha acesso global.

#ifndef __SINGLETON__
#define __SINGLETON__
#include
#include "ObjectManager.h"
#include "Camera.h"
class Singleton
{
private:
Singleton() {}
public:
static Singleton *instance;
dWorldID world;
dSpaceID space;
ObjectManager rootSceneNode;
Camera rootCamera;
dJointGroupID contactGroup;
// Função-membro que retorna sempre a mesma instância do objeto
static Singleton & getInstance()
{
if (!instance) instance = new Singleton();
return *instance;
}
};

#endif // __SINGLETON__

percebam que o construtor é privado isso impede de dar new na classe e criar uma nova instância; O que mas como eu vou usar então sem dar new na classe? Resposta sempre através do método getInstance, segue o exemplo de utilização.

Singleton::getInstance().world = dWorldCreate();
dWorldSetGravity(Singleton::getInstance().world,0.0,0.0,-9.8);
Singleton::getInstance().rootSceneNode.add(object);
Singleton::getInstance().rootSceneNode.Draw();

Espero que a implementação seja útil:
Saudações.

 

Mais referência: http://pt.wikipedia.org/wiki/Singleton

Posted in Uncategorized Tagged with:

Leave a Reply