Pool ou Factory?!  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
cancao
JavaEvangelist
[Avatar]

Membro desde: 28/06/2003 19:22:53
Mensagens: 338
Offline

Olá,
implementei uma classe abstrata a qual contem um metodo static chamado createObject que retorna um objeto tal. Esse metodo funciona assim:
Verifica se o objeto requerido já foi criado. Se sim, pega esse objeto de um map e retorna. Senão, cria o objeto, coloca no map e retorna. Isso é um pool ou uma factory?!

Até.
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Factory!

Ou talvez um Pooled Factory... hehehehehe

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4154
Localização: São Paulo
Offline

um pool eh um factory se voce implementou com factories methods. e uma factory pode vir a ser um pool, justo por isso voce encapsulou a construcao dos objetos!

outra coisa, isso da nomeclatura, voce nao deve se importar tanto. explicando que eh um pool, o pessoal vai entender.

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
dukejeffrie
Virtual Machine Man
[Avatar]

Membro desde: 21/08/2002 03:53:28
Mensagens: 661
Offline

Um Pool é alguém que tem um número finito de instâncias simultâneas, e toma uma atitude quando há mais gente querendo uma instância daquele objeto do que instâncias disponíveis: ou ele dá pau, ou ele coloca o requerente em espera, essas coisas...

A gente usa Singleton quando a gente quer a MESMA instância todas as vezes. Como vc usa um Map, e retorna a mesma instância, me parece mais o caso.

Um Connection Pool do JDBC, que é o caso mais comum, é um carinha que tem X instâncias de java.sql.Connection numa fila. Quando alguém empresa uma collection, ele remove. Se ele tiver vazio, alguma coisa especial tem que ser feita. Com o pool do Jakarta, vc pode configurar, se a thread que pediu espera até alguém devolver uma conexão, ou se ela espera um tempo, depois falha, ou se ela falha na hora, ou se o pool cria uma conexao nova só pra atender esse carinha a mais.

Usa-se um Pool quando uma instanciação daquele objeto é cara, e vc quer portanto reaproveitar instâncias, mas não dá pra viver com um Singleton.

[]s!!

Brevity is the soul of wit
[Email] [WWW] [MSN] [ICQ]
baiano_mg
JavaTeenager
[Avatar]

Membro desde: 28/07/2003 08:27:30
Mensagens: 193
Offline

Acho q minha situação é parecida com a do cancao. Tenho uma classe Usuario que tem um método getInstance(String uid). Mas essa classe não é um singleton. Esse método verifica se existe uma instancia com essa chave num hashtable, se tiver retorna ela, senão cria, coloca no hash e retorna.

Refaço a pergunta do cancao: isso é uma factory?
[Email] [MSN] [ICQ]
cancao
JavaEvangelist
[Avatar]

Membro desde: 28/06/2003 19:22:53
Mensagens: 338
Offline

Eu acho que como o danieldestro disse, isso funciona como uma Pooled Factory. Bom, no meu caso e aparentemente tambem no seu, não há um numero limitado de instancias como num pool de conexões, por exemplo. Pode ser um numero variavel de instancias mas, como é caro cria-las, o preferivel e manter as que já há em cache e usar quando necessario.

Em tempo, um pool deve ter, na maioria dos casos, esquemas para tratar acessos concorrentes e garantir que a mesma instancia não será usada em dois cantos ao mesmo tempo. No meu caso e provavelmente no seu, as coisas são diferentes. Voto pelo esquema de Pooled Factory.

Até.
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Acabei de inventar um novo Pattern.

Vou pedir pra adicionar nos do GoF.

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team