Padrão de Projeto 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.

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! 

{fcomment}

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *