Uso (e abuso) do Enum  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
ciczan
JavaGuru
[Avatar]

Membro desde: 22/12/2004 12:57:21
Mensagens: 227
Localização: Curitiba -PR
Offline

Moçada,

Estou fazendo uma aplicação onde o Modelo tem muitas coisas fixas e discretas, o que é um uso bom para do enum. Envolve consulta de dados de estações hidrológicas, meteorológicas e etc.

Daí comecei a usar enums (muitos), criei um com as estaçoes, um para o tipo das estações, um para grupos de estações que o usuário vai visualizar em conjunto e agora mais um para o modo de operação do programa (pode ser simulação ou previsão).

No modelo uso um facade que o controlador acessa, mas deixei os enums publicos tb, pq facilita muito no controlador para fazer comparaçoes, armazenar o estado, ifs, cases, verificação estática e tal.

Minha dúvida é se estou abusando dos enums. No início tava usando eles até para aramazenas os dados. Mas agora só pra coisa dinâmica.

Segue abaixo a listagem do que tem as info de postos:

[MSN]
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Porque não colocar isso num BD ou num arquivo de configuração?

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
armando
Java Ninja

Membro desde: 27/03/2006 14:23:57
Mensagens: 263
Offline

Cara... isso aí tá com cara de tabela... desse jeito, por exemplo, você tem muito mais esforço para garantir integridade referencial, por exemplo, e qualquer alteração nesses dados requer alteração da classe e recompilação do projeto. Pense melhor!

Abraço,

Armando
foliveira81
JavaGuru

Membro desde: 10/09/2006 21:57:52
Mensagens: 204
Offline

Kra vc pode deixar menos confuso esses seus enuns.
Mais ou menos assim

public enum Estado{

SP{
int valor() {
return 1;
}
String descricao() {
return toString();
}
},
MG{
int valor() {
return 2;
}
String descricao() {
return toString();
}
};
}

pode ate criar uma interface para deixar sempre como retorno de valor e descricao.
ex.

public interface GenericEnum {

public String getDescricao();

public int getValor();
}

public enum Estado{

SP{
int valor() {
return 1;
}
String descricao() {
return toString();
}
},
MG{
int valor() {
return 2;
}
String descricao() {
return toString();
}
};

abstract int valor();
abstract String descricao();

// Esses kras sao implemtados da interface..
public int getValor(){
return valor();
}

public String getDescricao() {
return descricao();
}

}

[]'s

Fernando Oliveira
[MSN]
ciczan
JavaGuru
[Avatar]

Membro desde: 22/12/2004 12:57:21
Mensagens: 227
Localização: Curitiba -PR
Offline

Obrigado pelas respostas pessoal. Acho legal discutir sobre arquitetura, todo mundo ganha e é mais interessante que tópicos do tipo "Por que tá dando erro".

Na verdade esse dado tem no banco (até uso o código do enum para fazer as consultas). Mas não é exatamente a estrutura que preciso. E como já existem outras aplicações usando o bd, não posso mudar a tabela. Fora o trabalho de mapear e tal... Um jeito seria criar uma view ou coisa do gênero.

Olhando bem, esse enum praticemente não tem lógica, então poderia virar um arquivo texto tb. Ganharia flexibilidade, mas perderia a verificação na compilação e daria mais trabalho.

O argumento de manter a intergridade relacional é forte mesmo. Acho que é o que vai me fazer por a mão na massa...

Mas essa é a única enum desse jeito, as outras são do tipo:


Para essas acho que enum ainda é uma ótima alternativa.

Quanto à outra forma de escrever o enum (proposta pelo foliveira81), fazendo cada item extender os métodos, não acho que fique tão mais claro. Depois que vc pega o jeito dá no mesmo. E gera mais código...
[MSN]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

ciczan wrote:E como já existem outras aplicações usando o bd, não posso mudar a tabela. Fora o trabalho de mapear e tal... Um jeito seria criar uma view ou coisa do gênero.


Yeap.
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team