Um bom exemplo de Singleton  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
TheMask
JavaBaby
[Avatar]

Membro desde: 14/04/2006 19:28:16
Mensagens: 79
Offline

Ponto pacífico que singletons são mal usados por aí e, portanto, configura-se um antipattern. Porém, alguém teria um exemplo de onde um singleton é bem vindo? De preferência, com um trecho de código.

**** Demaaaaaaais ****
plentz
Moderador
[Avatar]

Membro desde: 28/01/2004 07:34:12
Mensagens: 1584
Localização: Porto Alegre, RS
Offline

SessionFactory do Hibernate.
http://www.hibernate.org/42.html > What about the SessionFactory?

Diego Plentz - Twitter
"Provide options, don't make lame excuses."
[Email] [WWW]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7839
Localização: São Paulo, SP
Offline

SessionFactory eh bem melhor injetado do que como Singleton (ou testar vira um inferno).
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
Juk
JavaChild
[Avatar]

Membro desde: 14/07/2006 18:09:33
Mensagens: 104
Offline

deus é um bom exemplo se for em um aplicativo católico, se for um aplicativo celta ou egípcio ja mia..

Meu blog: http://blogdojuk.blogspot.com
josenaldo
GUJ Master
[Avatar]

Membro desde: 27/11/2006 12:39:28
Mensagens: 1140
Localização: Uberlândia/MG
Online

Juk wrote:deus é um bom exemplo se for em um aplicativo católico, se for um aplicativo celta ou egípcio ja mia..


[joke mode]
Como assim Deus é um singleton? E o esquema da Santissima trindade?

Deus implementa Três Interfaces (Pai, Filho e Espírito Santo)?
As outras entidades (Filho e Espírito Santo) implementam uma indireção com Deus?
Deus é uma superclasse? Ou é a própria JVM?]
Deus me perdoará por este post?
[/joke mode]


Josenaldo de Oliveira Matos Filho
UAIJUG - http://www.uaijug.com.br
http:jnaldo.com
[Email] [WWW] [MSN]
Fabio Kung
JavaEvangelist

Membro desde: 08/03/2004 08:24:47
Mensagens: 445
Localização: São Paulo
Offline

cv wrote:SessionFactory eh bem melhor injetado do que como Singleton (ou testar vira um inferno).

Comentário perfeito!

Procurando por oportunidades de emprego?
OndeTrabalhar.com
OndeTrabalhar.com Java?


http://blog.caelum.com.br


Fabio Kung
[WWW] [MSN] [ICQ]
neohacker
Virtual Machine Man
[Avatar]

Membro desde: 30/10/2006 15:23:14
Mensagens: 576
Localização: Santo André
Offline

Galera eu estou aprendendo Java, e pelo menos acho que ja estou bom nos fundamentos e agora começei a ler sobre Singleton e estava tentando reestruturar uma classe que eu tinha de conexão com o DB, mas estou tendo alguma dificuldades bobas e precisava de alguma ajuda.
O que eu devo mudar pra deixar esta classe dentro do padrão (ou melhor forma)


o método getInstance não está legal estou com problemas de como resolver ele

Obs: se for possivel (não quero abusar) se pudessem postar explicações aqui msm ou em algum outro tópico do GUJ, pois não tenho acesso em nenhum outro site.

Obrigado pela ajuda galera


http//www.tecnologiaims.blogspot.com

↑ Grab this Headline Animator

http://www.imstechnology.blogspot.com
[Email] [WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 19455
Localização: Curitiba/PR
Offline

Ok, seu método getInstance retorna um objeto do tipo Connection. Sua variável também é do tipo Connection, então, como você espera dar um new ConexaoDB() nela?

Então vamos lá. O primeiro passo para o seu singleton é remover todos os atributos estáticos. Se você terá somente uma instância dessa classe, pode usar os atributos dessa instância.

Projete a classe normalmente, como se ela não fosse um singleton, depois:
1. Deixe o seu construtor privado;
2. Crie o atributo estático para a instância única da sua classe;
3. Crie o método estático para obter essa instância.

No seu caso, acho que a classe ficaria mais ou menos assim:


O uso da classe fica simplesmente:


Só lembre-se que o singleton uma vez criado, não será mais removido de seu programa. Preste especial cuidado para recursos que ficam abertos e precisam de tratamento especial para serem fechados, como é o caso de uma Connection.
[WWW]
neohacker
Virtual Machine Man
[Avatar]

Membro desde: 30/10/2006 15:23:14
Mensagens: 576
Localização: Santo André
Offline

Desculpa a incapacitação de compreenção, mas ta treta entender. Estou pensando assim, mas é certeza que isso ta errado ta com cheiro de gambiarra.
Poderiam demostrar uma classe de controle a Bando de Dados pra eu poder me basear legal, mas ainda vou mandar a minha pra vcs darem uma criticada legal ai como ajuda.

Vw Galera


http//www.tecnologiaims.blogspot.com

↑ Grab this Headline Animator

http://www.imstechnology.blogspot.com
[Email] [WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 19455
Localização: Curitiba/PR
Offline

O método setDeath dessa forma pode fazer o seu Singleton deixar de ser singleton!

Outra coisa, qual é a idéia por trás de tantos métodos synchronized? Se for manter o seu código thread-safe, não está indo por um bom caminho, já que você vai retornar a mesma conexão para várias threads. O ideal seria criar uma conexão por thread, usando um thread local, ou criar um Pool de conexões. Como isso não é tarefa das mais fáceis, você pode pegar um pool pronto, como do projeto Jakarta DBCP.

This message was edited 1 time. Last update was at 30/07/2008 14:42:18

[WWW]
neohacker
Virtual Machine Man
[Avatar]

Membro desde: 30/10/2006 15:23:14
Mensagens: 576
Localização: Santo André
Offline

Blz, quando chegar em casa do uma olhada, pois aqui é tudo bloqueado.
Mas blz, vo tentar estudar mais alguma outra coisa.

Vlww

http//www.tecnologiaims.blogspot.com

↑ Grab this Headline Animator

http://www.imstechnology.blogspot.com
[Email] [WWW]
nique
What is classpath?

Membro desde: 04/06/2008 23:08:23
Mensagens: 7
Offline

Tenho que fazer um projeto pra faculdade usando o padrão singleton.
Mais não sei qual aplicação??? Preciso de uma idéia para fazer o programa....
Vlw
discorpio
Virtual Machine Man
[Avatar]
Membro desde: 06/02/2010 18:46:46
Mensagens: 502
Localização: Rio de Janeiro
Offline

Bom dia a todos.

josenaldo wrote:
Juk wrote:deus é um bom exemplo se for em um aplicativo católico, se for um aplicativo celta ou egípcio ja mia..


[joke mode]
Como assim Deus é um singleton? E o esquema da Santissima trindade?

Deus implementa Três Interfaces (Pai, Filho e Espírito Santo)?
As outras entidades (Filho e Espírito Santo) implementam uma indireção com Deus?
Deus é uma superclasse? Ou é a própria JVM?]
Deus me perdoará por este post?
[/joke mode]



Já dizia Lavosier que DEUS é o Perfeito Filósofo, Químico, Físico, Astrônomo, Matemático, .......enfim, até em outras Ciências desconhecidas do homem. Portanto DEUS não é uma Superclasse, DEUS não é um programa, além de DEUS ser o nosso Pai, ele também é o Pai da Ciência.

Só por esta razão, de DEUS ser também o nosso Pai, acredito que Ele te perdoará, assim como já me perdoou várias vezes.

Contudo, como aqui não é o espaço para falar de religião, voltemos ao foco, e vamos falar sobre Singleton e Hibernate, gostaria de aprender sobre o assunto.

O Senhor é meu Pastor e nada me faltará. (Sl. 23:01)
[MSN]
peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 3174
Localização: Rio de Janeiro
Offline

Um bom exemplo de Singleton?

System.out

System.err

http://pacman.blog.br

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
[WWW]
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3417
Offline

TheMask wrote:Ponto pacífico que singletons são mal usados por aí e, portanto, configura-se um antipattern. Porém, alguém teria um exemplo de onde um singleton é bem vindo? De preferência, com um trecho de código.



Procure no javadoc por Runtime e Desktop. São dois singletons.

Mais sobre singleton verdadeiros aqui

Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team