Skip to content
01/09/2009 / Thiago

Software Design Pattern: Singleton

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.

singleton3.png
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!🙂

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: