quinta-feira, 15 de março de 2012

Design Patterns: Singleton

O Design Pattern Singleton tem um dos desenhos mais simples. Ele tem como objetivo restringir a quantidade de instâncias de um tipo para apenas uma na aplicação. Ele faz isso controlando e centralizando a sua criação e o acesso a essa instância.

Imagine que você tenha um tipo que ocupa muito espaço na memória, ou que requer muitos recursos para ser instanciado. Se uma instância deste tipo puder ser reutilizada em diferentes lugares da aplicação, isso diminuiria o consumo de memória ou dos recursos consumidos para criação.

A descrição formal do Singleton é a seguinte: O Singleton garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso a ela.

Um exemplo seria uma classe de geração de log. Dentro de uma aplicação, faria sentido haver apenas uma instância da classe responsável por escrever em um arquivo (ou base de dados) de log. Isso reduziria problemas de concorrência no acesso ao arquivo de log, pois a mesma seria tratada dentro do próprio Singleton, uma vez que haveria apenas uma única instância da classe de log acessando o arquivo.

Neste exemplo, teríamos o seguinte desenho:

Observe que temos o método construtor privado, o que não permite que a classe seja instanciada com o comando new por outras classes. Temos também um atributo estático que armazena a única instância de Log na aplicação, e o método ObterInstância() que retorna essa única instância.

O Singleton pode trazer problemas em alguns aspectos: ele pode ser um ponto de gargalo em aplicações que usam threads, devido à concorrência no acesso à instância única. Outro ponto que deve ser considerado: é interessante para a sua aplicação que o estado do objeto singleton seja compartilhado? Se não, você deve evitar o singleton, pois ele pode trazer problemas que serão difíceis de rastrear.

Baixe o código-fonte do exemplo em C# (requer o Visual Studio 2010)

Clique aqui para voltar à Intradução aos Design Patterns, com a lista de todos os Patterns apresentados.

2 comentários:

sadbfabregas disse...

Follow this link to explore probably the most beneficiant Red 벳익스플로어 Dog Casino bonuses. Overall, we were pleased with the sport library of Red Dog Casino. While we would like to see a extra varied library, whatever is available at Red Dog must be sufficient for almost all} of the gamblers. Follow this link to discover extra about Ignition & its bonuses.

Anônimo disse...

In apply, this means that machines cannot let reels slip more than four symbols. Other rules embrace a 15 coin payout cap, a 50 credit cap on 토토사이트 machines, a 3 coin most wager, and different such rules. OLG piloted a classification system for slot machines on the Grand River Raceway developed by University of Waterloo professor Kevin Harrigan, as part of of} its PlaySmart initiative for accountable gambling. Inspired by diet labels on meals, they displayed metrics corresponding to volatility and frequency of payouts.