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?
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,
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.
pintofree
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