Replicar dados de configuração para outras classes

2 respostas
P

Pessoal estou terminando um software e utilizei o JDOM para criar e ler o xml de configuração, mas necessito passar estes dados para outras classes por exemplo dados de banco de dados necessito passar os dados para a minha classe DB. Um amigo meu me deu a ideia de criar dentro dos mesmo arquivo.java uma class extends config e passar os dados o que eu acho que fica muito ‘gambiarra’;

public class DB 
{
    public DB(){}

    métodos de conexão;

    DBConfig d = new DBConfig();
   
    d.getUserDatabaseUser():



}


class DBConfig extends configuração
{

}

2 Respostas

sergiotaborda

pedro.deus:
Pessoal estou terminando um software e utilizei o JDOM para criar e ler o xml de configuração, mas necessito passar estes dados para outras classes por exemplo dados de banco de dados necessito passar os dados para a minha classe DB. Um amigo meu me deu a ideia de criar dentro dos mesmo arquivo.java uma class extends config e passar os dados o que eu acho que fica muito ‘gambiarra’;

Vc deve ter 3 objetos aqui : 1) o objeto que usa a configuração, 2 ) o objeto que É-A configuração e 3) o objeto que criou a configuração a partir do xml.

NO seu caso vc tem o DBConfig que é a configuração, um DBConfigBuilder que lê do arquivo e o DB que faz o papel de cliente.

Agora vc quer que mais do que um cliente use a mesma configuração. Existem várias opções. A mais simples é usar o padrão Registry. Portanto, vc criará um 4 tipo de objeto que é o registro da configuração.

public class DBRegistry  {

      private static DBConfig dbConfig;

      private DBRegistry  (){} // construtor privado porque esta classe não é instanciável

      public static void setDBConfig (DBConfig config   ){
              dbConfig = config;
      }

       public static DBConfig  getDBConfig (){
             return dbConfig;
      }

}

vc pode combinar com o DBConfigBuilder se quizer assim

public class DBRegistry  {

      private static DBConfig dbConfig;

      private DBRegistry  (){} // construtor privado porque esta classe não é instanciável

      public static void setDBConfig (DBConfig config   ){
              dbConfig = config;
      }

       public static syncronized DBConfig  getDBConfig (){
             if (dbConfig == null){
                      dbConfig = new DBConfigBuilder().build();
              }
             return dbConfig;
      }

}
P

Valeu, vou implementar. Obrigado

Criado 20 de agosto de 2012
Ultima resposta 20 de ago. de 2012
Respostas 2
Participantes 2