[Resolvido] Impedir implementação de método

Pessoal, estou realizando uns testes em um projeto e me surgiu uma dúvida.

Existe uma maneira para impedir que dois métodos sejam implementados simultaneamente?

Vejam o caso: No projeto, exsite uma classe chamada “Conexao”, que como o nome sugere, serve para realizar a conexao com o banco de dados. Nessa classe, existem dois métodos: conectaPROD() e conectaTRN(), para conectar nas bases de produção e treinamento, visto que são servidor e usuários diferentes para cada caso. O que eu desejo é impedir que esses dois métodos sejam implementados simultaneamente, seguindo lógica semelhante a herança de interfaces, onde a implementação de seus métodos é obrigatória (apenas mudando para ao inves de obrigatoriedade, restrição de uso simultâneo, é claro).

No momento apenas eu estou mexendo nisso, aí dependendo do caso comento o código que “não pode ser usado”. Porém quando alguem diferente de mim for alterar pode haver confusões, por isso queria essa “proteção”.

Obrigado.

Crie um único método de conexão e configure-o para chamar o ambiente correto, seja via parâmetro, polimorfismo ou outra abordagem.

Sim, para esse caso poderia ser dessa forma também. Mas tratando apenas dos métodos, é possível impedir a implementação de ambos?

uma coisa bem chula é uma uma variável tipow flag se tiver true de um lado ativa um método e desativa outro e vice-versa.

Bom, pensando dentro da caixa eu faria assim: colocario os métodos conectaProducao() e conectaTreinamento() (não seja tímido em escrever nomes completos para seus métodos, evita coisas do tipo PROD) em uma interface Conexao. Criaria 2 classes concretas e final (que não podem ser estendidas) ConexaoProducao e ConexaoTreinamento, cada uma delas implementando a interface conexão. Daí, na classe ConexaoProducao eu implementaria o código conectaProducao() e implementaria conectaTreinamento(){} como um método vazio, que não faz nada, e declararia cada um dos métodos como final também. A mesma coisa para a classe ConexaoTreinamento.

Agora, pensado fora da caixa, eu dava um jeito de colocar as configurações de acesso em um arquivo de propriedades ou em um XML fora da aplicação, e criaria uma única, ou configurar DataSource, enfim, existe uma série de opções para se configurar dados de acesso fora do seu código. No Jboss por exemplo, existe um jeito de configurar os dados da conexão em um .xml e o melhor de tudo, você pode colocar a senha em um arquivo criptografado, de forma que você não precisa deixá-la aberta no arquivo .xml.

[quote=rmendes08]Bom, pensando dentro da caixa eu faria assim: colocario os métodos conectaProducao() e conectaTreinamento() (não seja tímido em escrever nomes completos para seus métodos, evita coisas do tipo PROD) em uma interface Conexao. Criaria 2 classes concretas e final (que não podem ser estendidas) ConexaoProducao e ConexaoTreinamento, cada uma delas implementando a interface conexão. Daí, na classe ConexaoProducao eu implementaria o código conectaProducao() e implementaria conectaTreinamento(){} como um método vazio, que não faz nada, e declararia cada um dos métodos como final também. A mesma coisa para a classe ConexaoTreinamento.

Agora, pensado fora da caixa, eu dava um jeito de colocar as configurações de acesso em um arquivo de propriedades ou em um XML fora da aplicação, e criaria uma única, ou configurar DataSource, enfim, existe uma série de opções para se configurar dados de acesso fora do seu código. No Jboss por exemplo, existe um jeito de configurar os dados da conexão em um .xml e o melhor de tudo, você pode colocar a senha em um arquivo criptografado, de forma que você não precisa deixá-la aberta no arquivo .xml.[/quote]

Desculpe a demora para responder, mas não consegui entrar no forum antes.
Implementei uma idéia parecida com essa mesmo, ficou blza.

Obrigado.