Essa solução cai justamente num problema que eu quero evitar. Perceba
minha arquitetura. Eu tenho componentes que desejam utilizar dados de
usuários. Uma solução seria armazenar o usuário na session, e passá-lo por
parâmetro para o componente. Eu perco totalmente a transparência.

  Gostaria de ativar meus componenetes sem passar o usuário como parâmetro.
Se a uma classe Singleton tivesse escopo de sessão, poderia fazer isso
calmamente. Meus componentes convocaria a instância única da classe usuário,
que teria escopo de sessão.

  Ainda estou em busca da melhor solução, mas você já me deu uma idéia. Ao
invés de passar como parâmetro a classe usuário, poderia passar a classe
session. Já aumenta bastante o encapsulamento e a transparência. Pois caso
eu precise de outra classe de sessão que não usuário, não será necessário
criar novo parâmetro.

  um abraço

  Jorge



-----Original Message-----
From: Eduardo Issao Ito [mailto:[EMAIL PROTECTED]]
Sent: quarta-feira, 25 de outubro de 2000 18:12
To: [EMAIL PROTECTED]
Cc: 'Clebert Rezende Suconic'
Subject: Re: [java-list] Design Pattern Singleton



Dependendo do que voce quer fazer, nao e' preciso nada disso!
A propria classe HttpSession e' um "singleton para a sessao", e pode
guardar objetos.
Assim, todos os threads duma mesma sessao podem compartilhar os mesmos
objetos.

HttpSession session = request.getSession(true);

session.putValue("meuobjeto", new MeuObjeto());


--
Eduardo Ito


Jorge Martins wrote:
> 
>    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]
> -------------------------------------------------------------------------

--
Eduardo Issao Ito <[EMAIL PROTECTED]>
Integration Technologies Ltda. <http://www.integrationtech.com.br>
Rua Marina Saddi Haidar, 176
04650-050 / Sao Paulo / SP / Brasil
Phone: +55 11 5522-4848 x311
Fax:   +55 11 5524-1125

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

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

Reply via email to