Pattern Singleton com número váriavel de instâncias

8 respostas
P

Criei um objeto para gerar uma única instância:

public class ConexaoSingleton {
    private static Conexao conn=null;

    public ConexaoSingleton(){
    }

    public static Conexao getInstance(){
       if (conn==null){
           conn = new Conexao();
       }
       return conn;
    }
}

Queria possuir um número variavel de instâncias, por exemplo 5. Mas como posso alterar este objeto para fazer este controle, de preferencia sempre buscando a instância mais inativa.

Obrigado.

8 Respostas

louds

Você não quer um Singleton mas sim um Pool

Shelson

puxa pessoal… serah q vcs poderiam me explicar melhor a respeito …

Rafael_Steil

Singleton == somente uma instancia em memoria

Pool = varios objetos sao instanciados e guardados em uma lista… assim, quando alguem precisar de uma instancia de tal objeto, ele pega do pool, ao inves de criar do zero. O uso mais comum deve ser com banco de dados, onde a conexao leva um tempo consideravel para ser criada. Dessa forma, voce cria n de uma unica vez e vai pegando do pool, ao inves de criar uma toda vez que for necessario.

Rafael

louds

Um singleton só tem sentido quando você quem somente uma única instancia, saiu disso não é mais singleton.

Provavelmente voce quer usar 1 Pool, o rafael já explicou bem, ou uma Factory.

Factory é um objeto que ‘produz’ outros objetos.

Shelson

louds, Factory tem a ver com a class Class ? :?

Rafael_Steil

Nao, Factory eh bem o que o nome diz mesmo, uma “fabrica” de objetos… ao inves de fazer a instanciacao diretamente de determionado objeto, voce solicita para uma classe auxiliar - o Factory - criar ele para voce.

Mais informacoes voce encontra no Google ou em http://www.dofactory.com/Patterns/PatternFactory.aspx

Rafael

cv1

Alias, se vc pensar bem, a Class tem um método factory:

Class klass = java.util.HashMap.class; HashMap map = (HashMap) klass.newInstance();

Ou seja, o Shelson nao falou nenhuma besteira aqui :wink:

urubatan

esta poderia ser classificada como uma Abstract Factory, certo??
pois o metodo newInstance() da classe Class instancia qualquer classe para a qual esta instancia esteja apontando e tenha um construtor sem parametros :slight_smile:

Criado 6 de novembro de 2003
Ultima resposta 7 de nov. de 2003
Respostas 8
Participantes 6