Saquei como se faz. É justamente como eu estava pensando. É um padrão
muito interessante mesmo, uma extensão do Singleton (pela idéia da classe
controlar o acesso ao seu objeto) com o detalhe que agora haverá multiplas
instâncias. É... Já podemos documentar, escrever um paper e buscar nosso
espaço no meio acadêmico. :)

   As classes Dictionary e Hastable manuseiam Objects. Vale a pena
expecilalizá-las (criando minhas próprias classes) para melhora de
performance. Sei que esta estratégia é interessante a classe Vector pela
facilidade de implementação e aumento no desempenho.

   obrigado

   Jorge

   ps: tem a dica de algum tutorial para a implementação da solução por EJB?


-----Original Message-----
From: Clebert Rezende Suconic [mailto:[EMAIL PROTECTED]]
Sent: quarta-feira, 25 de outubro de 2000 11:54
To: [EMAIL PROTECTED]; Jorge Martins
Subject: Re: [java-list] Design Pattern Singleton


Utilize a classe dictionary ou Hashtable.

Você poderá ter um índice para cada propriedade.

Na verdade você estará misturando dois patterns. O FactoryObject e o
Singleton. Não sei se existe um pattern documentado baseado em propriedades.


public class MinhaClasseSingleton
 {
     private MinhaClasseSingleton()
     {
     }


     private static Hashtable  instanceHashSingleton;

       /// Pseudo código, de uma olhada no help para ver como sao os
comandos de verdade
      // Se desejar mudar para outra variavel....
     public synchronized static MinhaClasseSingleton getInstance(Object
secao)
     {
        MinhaClasseSingleton findedInstance=null;

         // TODO - Procure na hash a secao valida para o objeto secao



         if (findedInstance==null)
         {
              findedInstance= new    MinhaClasseSingleton();
              // Execute o put na hashTable
         }

         return findedInstance;
     }
 }


----- Original Message -----
From: Jorge Martins <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, October 25, 2000 10:13 AM
Subject: RE: [java-list] Design Pattern Singleton


>    Já tinha pensado em fazer algo assim. E realmente, a melhor alternativa
é
> utilizar o código da seção como índice. Mas como encapsular via
dicionário?
> Não entendi. Também não tenho conhecimento sobre EJB, logo pode vir a se
> tornar uma alternativa futura. A idéia de um objeto remoto controlando
isto
> me agrada.
>
>    obrigado
>
>    Jorge
>
> -----Original Message-----
> From: Clebert Rezende Suconic [mailto:[EMAIL PROTECTED]]
> Sent: terça-feira, 24 de outubro de 2000 20:33
> To: Jorge Martins
> Subject: Re: [java-list] Design Pattern Singleton
>
>
> Você poderia utilizar Singleton, se coloca-se um método getInstance(int
> codigoSecao), e encapsula-se o uso da seção via
> Dicionário.
>
>
> Você também poderia fazer isto, utilizando um EJB atravéz de um Entity
> Object utilizando o código da Seção, ou o código do usuário. poderia até
> armazenar em um cookie. Que aliás acho o mais interessante.
>
>
> O que você acha?
>
> ----- Original Message -----
> From: Jorge Martins <[EMAIL PROTECTED]>
> To: 'Clebert Rezende Suconic' <[EMAIL PROTECTED]>
> Sent: Tuesday, October 24, 2000 8:16 PM
> Subject: RE: [java-list] Design Pattern Singleton
>
>
> >    Obrigado Clebert
> >
> >    Já estava chegando a esta mesma conclusão. Irei utilizar este design
> > pattern apenas para o escopo de aplicação. E irei armazenar este objeto
> > usuário no escopo da sessão.
> >
> >    O chato é perder a transparência, pois será necessário passá-lo como
> > parâmetro aos meus componentes ao invés deles automaticamente acessá-los
> com
> > getInstance(). Pode parecer besteira, mas não serei eu a fazer isso (e
nem
> > minha empresa) e sim nossos clientes. E quanto mais transparente e
> simples,
> > mesmo que por um detalhe, for o trabalho do cliente, melhor.
> >
> >    um abraço
> >
> >    Jorge
> >
> >
> > -----Original Message-----
> > From: Clebert Rezende Suconic [mailto:[EMAIL PROTECTED]]
> > Sent: terça-feira, 24 de outubro de 2000 20:14
> > To: Jorge Martins; [EMAIL PROTECTED]
> > Subject: Re: [java-list] Design Pattern Singleton
> >
> >
> > Na minha opinião você não deveria utilizar um Singleton. Você deveria
> > utilizar um singleton quando você necessitasse de uma instância para
todos
> > os usuários do seu site. Uma classe singleton poderia conter dados
básicos
> > para todos como UFs, Sexo. Whatever, uma série de coisas.
> >
> > Acredito que o mais indicado seria uma instância de objeto armazenado
> > diretamente na seção.
> >
> >
> > Seções armazenam Objects. Você poderá fazer type-cast quando necessitar.
> > Basta recuperar o objeto da seção
> >
> >
> >
> > Clebert
> >
> >
> > ----- Original Message -----
> > From: Jorge Martins <[EMAIL PROTECTED]>
> > To: 'Clebert Rezende Suconic' <[EMAIL PROTECTED]>
> > Sent: Tuesday, October 24, 2000 8:03 PM
> > Subject: RE: [java-list] Design Pattern Singleton
> >
> >
> > > OK. Isso eu consegui. Mas o escopo desta classe está sendo de
aplicação
> e
> > eu
> > > gostaria que fosse de seção. Minha idéia é manter toda a informação
que
> > > preciso do usuário do meu site em uma classe Singleton. Assim, cada
> sessão
> > > manteria uma instância desta classe.
> > >
> > > Estou falhando em algum conceito ou é algum detalhe de implementação?
O
> > > conceito de sessão, uma para cada usuário do meu site naquele momento,
> > está
> > > correto? Como é feito o controle destas sessões? É por IP?
> > >
> > > um abraço
> > >
> > > Jorge
> > >
> > > ps: obrigado pela dica do synchronized. Eu tinha me esquecido deste
> > > importante detalhe até agora.
> > >
> > >
> > > -----Original Message-----
> > > From: Clebert Rezende Suconic [mailto:[EMAIL PROTECTED]]
> > > Sent: terça-feira, 24 de outubro de 2000 19:59
> > > To: [EMAIL PROTECTED]
> > > Cc: [EMAIL PROTECTED]
> > > Subject: Re: [java-list] Design Pattern Singleton
> > >
> > >
> > > Teoricamente você não teria nenhum problema em criar a singleton.
> > >
> > >
> > > public class MinhaClasseSingleton
> > > {
> > >     private MinhaClasseSingleton()
> > >     {
> > >     }
> > >
> > >
> > >     private static MinhaClasseSingleton instanceSingleton;
> > >
> > >     public synchronized static MinhaClasseSingleton getInstance()
> > >     {
> > >         if (instanceSingleton==null)
> > >         {
> > >              instanceSingleton= new    MinhaClasseSingleton();
> > >         }
> > >
> > >         return instanceSingleton;
> > >     }
> > > }
> > >
> > > Basta você colocar a classe no classPath.
> > >
> > >
> > > ----- Original Message -----
> > > From: Jorge Martins <[EMAIL PROTECTED]>
> > > To: <[EMAIL PROTECTED]>
> > > Sent: Tuesday, October 24, 2000 6:24 PM
> > > Subject: [java-list] Design Pattern Singleton
> > >
> > >
> > > > 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().
> > > >
> > > >
> > > > página 1 - usa a classe Singleton, configurando seu nome.
> > > >
> > > > > Singleton.getInstance().setName("Meu Nome");
> > > >
> > > >
> > > > página 2 - usa a classe Singleton, retornando o nome.
> > > >
> > > > > String name = Singleton.getInstance().getName();
> > > >
> > > > A String name deve ter valor "Meu Nome" se usada na mesma sessão da
> > página
> > > > 1.
> > > >
> > > >
> > > > Fui suficientemente claro? Qualquer dica será bem vinda.
> > > >
> > > > um abraço
> > > >
> > > > Jorge Roberto Diniz Martins
> > > > [EMAIL PROTECTED]
> > > > www.unear.net
> > > > Tel.: +55 (21) 389-2924


------------------------------ 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