Dando prosseguimento a série de artigos sobre Design Patterns, hoje vou falar sobre o padrão de projeto Singleton.
Singleton
Objetivo – criar uma estrutura para controle da instanciação de um tipo de objeto. Imaginando que um objeto apenas pode ser criado uma única vez, o padrão de projeto Singleton oferece um controle sobre o uso do objeto.
Em alguns projetos é necessário apenas uma instância de uma determinada classe. Por exemplo, em uma aplicação onde existe a geração de arquivos de log, uma única classe responsável em fazer a gestão dos logs poderá ser criada. Outro exemplo que posso citar é a de uma aplicação Web. Um único objeto pode ser criado para realizar a gestão da sessão do usuário. Caso o mesmo já possua uma sessão e seja pedida pela aplicação Web criar uma nova, a existente será retornada.
![]() |
Diagrama UML representando uma classe Singleton |
Exemplo
Segue abaixo um exemplo de código em C++ para demonstrar o padrão de projeto Singleton.
class Session {
private:
Session() {}
public:
static Session& instance() {
static Session *instance = 0;
if (!instance)
instance = new Session();
return *instance;
}
};
class WebApp {
public:
void main () {
obj = Session.instance();
}
}
No exemplo acima a classe WebApp realiza a instanciação da classe Session. A instanciação da classe Session deve sempre ser realizada através do método estático instance. O construtor da classe Session nunca deve ser chamado diretamente, de modo a permitir que a própria classe realize o controle dos objetos que são criados.
Abraços e até mais! 🙂