Tags: , , | Categories: Padrões de Projeto Posted by Rafael on 07/05/2011 17:06 | Comentários (0)

Olá pessoal!

Hoje vamos falar um pouco sobre um padrão muito utilizado e, de igual modo, simples: o padrão Singleton.

Esse padrão tem como objetivo "garantir que uma classe tenha somente uma instância e fornecer um ponto de acesso global para a mesma". [GAMMA, 2000].

Em algumas situações precisamos garantir que apenas uma instância de uma determinada classe seja criada no contexto do sistema. São os casos de fazermos uso de propriedades específicas de configuração comuns à toda aplicação, utilização de um Proxy qualquer existente na sua empresa, que seja utilizado para integração dos sistemas, por exemplo.

Por se tratar de um padrão muito simples, vamos direto para a representação da sua estrutura, e logo em seguida para uma implementação de exemplo.

A estrutura do padrão Singleton é a seguinte:

Estrutura Singleton

Para que exista uma instância única na aplicação, precisamos criar um construtor privado na classe Singleton, uma variável estática, e implementarmos a lógica para criação da instância e o seu retorno. O código abaixo exemplifica isso:

Aqui está o projeto completo: Singleton.zip (20,92 kb)

Ao executar o projeto, se você inserir um breakpoint no método obterInstancia da classe ProxyConnectionDB e ir passo-a-passo, notará que ele cria a instância apenas na primeira execução (variável con1), pois a classe nunca foi utilizada. Porém, na segunda chamada (variável con2) o objeto já existe, e sua instância é retornada, sem criar uma nova instância.

O exemplo acima implementa o padrão Singleton pois tem um contrutor privado, e um método que cria e/ou retorna a instância da classe, que será acessada por um único ponto na aplicação.

Alguns padrões podem ser implementados usando Singleton. É o caso dos padrões Prototype, AbstractyFactory e Builder. Já conhecemos o padrão AbstractyFactory, e veremos os padrões Prototype e Builder em breve.

É isso!

Até a próxima!

 

 

Referência Bibliográfica

GAMMA, Erich, Padrões de Projeto, Porto Alegre: Bookman, 2009.