Implementação do Singleton

2 respostas
smota

Ola Pessoal,

Preciso implementar um Singleton (eu acho :? ) .... minha aplicação tem uma GUI e eu só posso permitir uma tela ...

Meu codigo (resumido):
public final class AppFaturamento 
	extends Observable
	implements IObservable
{
/** Instancia única deste objeto*/
	private static final AppFaturamento _theInstance = new AppFaturamento();

/*Construtor*/
	private AppFaturamento() {
		//instancia minha GUI (outra classe)
		//mostra, etc. e tal
	}

/* Carrega a instancia */
	public static AppFaturamento getInstance() {
		return _theInstance;
	}

	/**
	 * Entrada do programa.
	 */
	public static void main(String[] args) {
		AppFaturamento.getInstance();
	}	
}

Mas ele esta instanciando varios objetos da minha classe ...

Imagino que to errando no Singleton :oops:

Observações, URLS?

Valeu

[]s

2 Respostas

Rafael_Steil

Voce voce esta iniciando duas aplicacoes distintas, entao realmente seria criado duas estaticas, ja que sao areas de memoria diferentes ( ao contario do que acontece em servlets, por exemplo ).

Se quiser impedir que o usuario rode mais de uma instancia do programa, voce pode fazer algo mais arcaico, como criar um arquivo de lock em disco e verificar se ele existe… se existir, ja tem um programa rodando ( claro que isso eh bem sujeito a problemas do tipo “programa quebra e nao remove o lock”, mas serve mais como ideia do que como implementacao )

Rafael

wbsouza

Outra idéia talvez algo parecido com o que o rafael disse, é colocar um Socket Server em uma porta definida por vc, e fazer tratamento de erros caso uma segunda instancia do Socket Server for subir. Assim vc já sabe que existe uma copia em execução, dá uma mensagem e finaliza o programa.

[]s, Welington B. Souza

Criado 6 de junho de 2003
Ultima resposta 6 de jun. de 2003
Respostas 2
Participantes 3