Obrigado Bruno

   Mas o meu problema não era quanto a implementação e sim do comportamento
deste design pattern em JSP/Servlets. Após pequenos testes, pude perceber
que o escopo do objeto único (o static Singleton.instance) é de aplicação.
Gostaria que fosse de sessão.

   Dê uma lida na série de mensagens que eu troquei com o Clebert. Chegamos
a conclusão que terei que extender o conceito do Singleton, para que a
classe controle um objeto para cada sessão. Basicamente farei uma hashtable
e o método getInstance() terá um parâmetro session.

   Ainda não estou satisfeito com esse modelo, pois acaba com minha
transparência. Eu gostaria que meus componentes usassem o método
getInstance() sem passar parâmetros e, de alguma forma que ainda não sei,
minha classe Singleton retorna-se o objeto único daquela sessão.

   Estou pensando em minha classe Singleton acessar uma variável de ambiente
SESSION no método getInstance(). Esta variável, com escopo de sessão,
armazenaria a sessão do usuário. Assim, com esta informação, Singleton pode
retornar o objeto apropriado.

   Isto funciona? Como eu acesso variáveis de ambiente em java? Isso não
faria com que minha classe Singleton ficasse restrita ao ambiente webserver?

   Irei estudar um pouco mais e realizar alguns testes. Qualquer dica, por
favor, envie. Será muito bem vinda.

   um abraço

   Jorge

-----Original Message-----
From: Bruno Augusto Vivas e Possas [mailto:[EMAIL PROTECTED]]
Sent: terça-feira, 24 de outubro de 2000 20:42
To: [EMAIL PROTECTED]
Subject: Re: [java-list] Design Pattern Singleton


On Tue, 24 Oct 2000, Jorge Martins wrote:

>Alguém já implementou o design pattern Singleton para ser usado em páginas
>JSP? A idéia é transparentemente manter um instância única de uma classe
>através de uma sessão. Assim meus outros componentes beans utilizariam esta
>classe com o comando Singleton.getIsntance().
>
>Exemplo:
>
>class Singleton () - classe com única instância. Para acessá-la deve-se
>utilizar o método estático getInstance().

Caro Jorge,

matenha uma variável estática na sua classe(instance), que corresponderá a
instância única. Faça com que o construtor da sua classe Singleton seja
private para garantir que a única forma  de ter um objeto dessa classe seja
através da chamada ao método getInstance().  Implemente o metodo estático
getInstance(). Assim você terá uma Singleton. Abaixo, mostro a implementação
que normalmente uso.

public class Singleton {

        private Singleton() {
        }

        public static Singleton getInstance() {
                if (instance == null) {
                        instance = new Singleton();
                }
                return instance;
        }

        private static Singleton instance = null;
}
        
>um abraço
>
>Jorge Roberto Diniz Martins
>[EMAIL PROTECTED]
>

Abraços,
                        Bruno Augusto Vivas e Possas
                             <[EMAIL PROTECTED]>
                           <[EMAIL PROTECTED]>
                           Linux user number 100453     
                        <http:/www.dcc.ufmg.br/~bavep>


------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------

Responder a