| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/08/2004 14:24:17
|
danieldestro
Moderador
![[Avatar]](/images/avatar/a5bfc9e07964f8dddeb95fc584cd965d.png)
Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline
|
Eu já ví vários exemplos de Factory, codificados:
E também:
E também:
Dos três exemplos, qual o mais adequado/correto?
Abraços
|
gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/08/2004 15:04:13
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline
|
O primeiro não usa a ideia de AbstractFactory e os outros dois usam singleton, que não acho uma boa idéia usar.
|
http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/08/2004 15:38:40
|
eduardo_lopes
JavaGuru
![[Avatar]](/images/avatar/a89cf525e1d9f04d16ce31165e139a4b.jpg)
Membro desde: 09/05/2003 10:33:14
Mensagens: 210
Localização: Cascavel - PR
Offline
|
louds wrote:O primeiro não usa a ideia de AbstractFactory e os outros dois usam singleton, que não acho uma boa idéia usar.
o que vc sugere?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/08/2004 18:33:28
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Use algum container de injecao de dependencias, como PicoContainer, Spring, HiveMind, Avalon, etc etc etc, ao inves de criar Factories. Eh mais facil, simples, rapido e testavel. E nao provoca caries, de quebra
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/08/2004 19:03:08
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline
|
Factories tem seus usos cv, o ruim aqui é o singleton. Usar algum mecanismo de IoC, seja por injeção ou busca de dependencias.
|
http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/08/2004 21:02:17
|
saoj
JWizard
![[Avatar]](/images/avatar/2e7ceec8361275c4e31fee5fe422740b.png)
Membro desde: 09/03/2004 23:34:46
Mensagens: 2666
Localização: Chicago, EUA
Offline
|
Fala Louds !!!
Por que singleton não é uma boa para uma factory ???
Não é legal eu centralizar a criação dos meus objetos numa instância só ???
Vai que amanhã eu quero fazer um pool de instâncias, por exemplo ???
Qual o mal do singleton ???
Um abraço,
Sergio
|
Sergio A Oliveira Jr. - saoj
ExperiMENTA:
Mentawai = http://www.mentaframework.org - Full-stack Java Web Framework com Configuracão Programática
MentaQueue = http://mentaqueue.soliveirajr.com - Queue de alta-performance.
MentaLog = http://mentalog.soliveirajr.com - Non-intrusive, fast, garbage-less, colored and straightforward logging
MentaBean = http://mentabean.soliveirajr.com - Tiny ORM with SQL Builder
MentaRegex = http://mentaregex.soliveirajr.com - Perl-style regex for Java.
MentaContainer = http://mentacontainer.soliveirajr.com - Straightforward IoC, DI e Auto-Wiring
Space4J = http://www.space4j.org - Banco-de-dados de Objetos em Memória
Options-Lib = https://github.com/saoj/options-lib - Ruby classes para ter acesso as opcoes do Yahoo Finance
Selleto = http://www.selleto.com.br
Flipinion = http://www.flipinion.com
Kawai = http://www.kawaiwiki.org
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/08/2004 22:12:09
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline
|
Singleton é para garantir a existencia de somente uma instancia da classe. Achar 1 use-case onde isso é um requisito é realmente raro, nos outros casos vc está usando o anti-pattern "gambiarra lookup".
Uma factory é interessante não ser um singleton por vários motivos, vou dar um exemplo concreto para não parecer pura retórica.
Se a sua factory não for um singleton, refatorar seu código para instroduzir o pattern de abstract factory fica muito mais facil, do trivial para o infernal eu diria.
|
http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/08/2004 22:29:45
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Vou me meter neste papo:
1) Singletons não escalam bem porque são dificeis de controlar quando se põe a aplicação em cluster;
2) Com EJBs é dificil usar Singletons por vários motivos como as restrições das variáveis estáticas read/write e também por race conditions. Singletons não podem ser synchronized com EJBs e todos os EJBs no mesmo container vão compartilhar a mesma instância. Não há como controlar o acesso concorrente. A alternativa de usar RMI para criar Singletons como objetos remotos é complicado e como não são gerenciados pelo EJB container, podem virar um single point of failure.
3) Singletons são inimigos mortais da testabilidade pois é muito dificil substituir um Singleton por um test stub
4) Singletons não deixam facilidades do tipo hot redeploy funcionar corretamente por permanecem com objetos no cache bloqueando mudanças na configuração.
5) Em tempos de uso de containers IoC, Singletons de qualquer tipo ficam completamente por fora das vantagens de uso de IoC
6) Além de se poder usar cluster há diversas outras vantagens de se evitar Singletons usando um um objeto de contexto de aplicação tipo ServletContext ou registry :
Flexibilidade de projeto programando por interfaces e sem depender muito de variáveis estáticas;
Os "Singletons" podem ser JavaBeans configurados pelas propriedades dos beans;
Podemos recarregar os valores do "Singleton" inclusive com JMX
Podemos ter um ponto único de configuração ao invés de um para cada Singleton.
Resumindo: não é que Singletons nunca devam ser usados como bem disse o louds. O problema é que a partir do momento em que usamos nossa aplicação perde escalabilidade e versatilidade.
Aguardo outras opiniões que me complementem.
[]s
Luca
This message was edited 1 time. Last update was at 22/04/2005 16:06:51
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/08/2004 23:00:14
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Fantastico seu post, Luca. Resumiu perfeitamente tudo que eu tenho tentado dizer faz um bom tempo aqui no GUJ sobre singletons
Update: claro, sem a eloquencia toda. "Faiz parte!"
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/08/2004 23:05:38
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
CV, veja o que acabei de dizer neste instante para o rafael:"realmente o louds e o cv há tempos atrás me chamaram a atenção para os riscos de se abusar de singletons.
Hoje vejo que eles tinham razão"
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
|
|