Olá pessoal!
Eu sei que existem vários tópicos sobre Singleton, mas o meu caso é um pouco diferente pois não encontrei nada parecido.
Também sei que muita gente tem críticas contra este padrão, mas estou sendo quase que “obrigado” a usar.
Bem, é o seguinte.
Tenho uma classe de banco que faz uma conexão.
Eu gostaria de ter apenas uma instância desta classe, mas caio num problema grande caso eu deseje mudar o host do banco por exemplo. Se eu fizer isso a instância permance a mesma e isso não é legal.
Tipo … Gostaria de fazer algo que criasse uma única instancia, mas por parâmetro. Se já existir uma conexão com um banco para o host X, não é criada outra, mas se eu criar uma conexão com um banco para o host Y aí sim é criada uma instância pois não existia conexão com o banco Y,
Conseguiram compreender?
Agradeço desde já pela ajuda!
Não sou expert no assunto e não sei se entendi direito, mas nesse caso não deixaria de ser um Singleton? Uma vez que você necessita, em alguns casos, criar novas instancias dessa classe?
[quote=goathi]Olá pessoal!
Eu sei que existem vários tópicos sobre Singleton, mas o meu caso é um pouco diferente pois não encontrei nada parecido.
Também sei que muita gente tem críticas contra este padrão, mas estou sendo quase que “obrigado” a usar.
Bem, é o seguinte.
Tenho uma classe de banco que faz uma conexão.
Eu gostaria de ter apenas uma instância desta classe, mas caio num problema grande caso eu deseje mudar o host do banco por exemplo. Se eu fizer isso a instância permance a mesma e isso não é legal.
Tipo … Gostaria de fazer algo que criasse uma única instancia, mas por parâmetro. Se já existir uma conexão com um banco para o host X, não é criada outra, mas se eu criar uma conexão com um banco para o host Y aí sim é criada uma instância pois não existia conexão com o banco Y,
[/quote]
O seu problema não tem nada a haver com Singleton.
Use a interface javax.sql.DataSource para obter duas conexões. Utilize uma biblioteca que faça pooling de conexões e crie um DataSource especial que faça isso para vc ( ou utilize algum que ja seja provido pela biblioteca.) Alguns drivers já forneces um DataSource com pooling.
Realmente, vc nao vai encontrar a solução do seu problema procurando em singletons pois nao tem nada a ver com o mesmo.
Mais respondendo a duvida vc so precisa filtrar, a criação de seu obejeto, o singleton geralmente filtra por nulo, ex, se o objeto é nulo, ele cria um novo, vc precisa incrementar seu if, trate assim, se for nulo e diferente do host que vc quer ele cria, se nao retorna o exixtente