Singleton Design Pattern - Ajuda como funciona?

problema:

[quote]Imagine que tenha uma classe FabricaDeCarro e quero garantir que só existe um objeto desse tipo em toda
a memória. Não existe uma palavra chave especial para isto em java, então teremos de fazer nossa classe
de tal maneira que ela respeite essa nossa necessidade. Como fazer isso? (pesquise: singleton design
pattern)[/quote]
:shock:
Pra que serve? Como se usa? :?:

O pattern Singleton existe para ser aplicado quando você deseja que exista somente uma instância de uma determinada classe.
Esta classe possui um construtor privado (ou seja, somente ela pode se instanciar) e controla uma única instância de si mesmo, permitindo que as classes externas obtenham essa instância através de um método, já que ela não poderá ser instanciada diretamente chamando seu construtor, pois o mesmo é privado.

Exemplo básico:

public class ExemploSingleton {

	private static ExemploSingleton instancia;

	private ExemploSingleton() {

	}

	public static ExemploSingleton getInstancia() {
		if (instancia == null) {
			instancia = new ExemploSingleton();
		}
		return instancia;
	}

}

Mais informações:
http://pt.wikipedia.org/wiki/Singleton

em que tipo de projeto nos nescessitamos de uma pattern Sigleton?

Praticamente nenhum.

http://www.guj.com.br/posts/list/14615.java#78656

Eu vou criar um chat on-line para N pessoas se conectarem ao mesmo tempo, projetinho Tomcat, apenas para estudar, e para fazer com que todo mundo que estiver conectado veja a mesma janela de chat, resolvi utilizar uma classe “Singleton” para controlar a exibição dos textos.

A implementação de um singleton em java vc acha até na wikipedia.

Eu imagino que, se vc tem condições extremas como sistemas embarcados, singletons podem ser interessantes.

Entretanto em projetos mais ‘ordinários’ tem que ter cuidado com singletons pois vc pode ter resultados inesperados, principalmente se não compreender como funcionam o classloader. Outro ponto que vc tem que tomar cuidado é com relação aos testes desses objetos, digamos, exóticos.

De uma lida no padrão Flyweight, de repente vc pode ter outros insights :wink: