Pattern para modelagem de coleção de constantes  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
caiosiqueira
Debugger

Membro desde: 08/05/2004 20:50:22
Mensagens: 68
Localização: Rio de Janeiro / RJ
Offline

Pessoal, boa tarde.

No projeto que estou alocado, existem alguns campos pré-codificados, cujo valores não estarão em uma tabela do banco de dados, mais sim no código do sistema. Podemos dizer que estes valores serão constantes dentro do meu sistema. Um exemplo é o campo tipo_documento_identidade, que possui os valores "Carteira de Identidade", "Carteira Profissional" e "Passaporte".

A minha dúvida é sobre a melhor forma de se trabalhar com estes valores, já que eles serão utilizados em várias partes do sistema. Um colega aqui do trabalho viu que daria para resolver isto com Ennumerations, só que nós estamos utilizando a versão 1.4.2-08 do java, e este recurso só está disponível para a versão 5 do java.

Qualquer luz sobre este assunto será bem vinda.

Atenciosamente,

Caio Tácito Siqueira de Abreu
Analista/Desenvolvedor Java
Rio de Janeiro - Brasil
[MSN] [ICQ]
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Um dia eu vi uma dica legal em um site. Não me lembro o link se não eu passaria para vc.
Mas era +- assim:


Isso evita vc colocar valores inválidos

This message was edited 2 times. Last update was at 08/06/2005 14:50:48


O bom menino !!!
caiosiqueira
Debugger

Membro desde: 08/05/2004 20:50:22
Mensagens: 68
Localização: Rio de Janeiro / RJ
Offline

jpprogrammer,

a sua solução parece ser muito boa. Baseado nela, eu criei uma interface chamada TipoConstanteInterface, uma classe abstrata chamada TipoConstanteAbstrata que implementa TipoConstanteInterface, e finalmente a classe que extende a classe abstrata e aonde está definido as constantes, chamada TipoDocumentoIdentidade.

Abaixo segue o código da interface e das classes que criei:






Fiz desta forma para ficar o mais genérico possível. Por exemplo, eu necessitarei carregar comboboxs em minhas páginas contendos o valor destas constantes. Da forma que defini, poderei criar uma custontag que realize este preenchimento, e que não necessitará conhecer o valor que deverá preencher, pois ela acessará na verdade a interface. Já a classe abstrata implementa os métodos comuns de todas as classes de constantes, como carregar o codigo e descricao no construtor, resgatar o codigo ou a descricao, e realizar a comparação de igualdade entre os objetos.

E então, você acha que desta forma está bem implementado, ou poderia ser melhorado?

Assim, estou definindo uma interface padrão que poderá ser utilizada, por exemplo, numa custon tag que deverá fazer o preenchimento de um determinado combobox, mais não sabe qual tipo de valor constante deverá capturar, e uma classe abstrata que

- EDIT - Por favor, ponham os tags [ code ] -

This message was edited 1 time. Last update was at 08/06/2005 16:59:39


Atenciosamente,

Caio Tácito Siqueira de Abreu
Analista/Desenvolvedor Java
Rio de Janeiro - Brasil
[MSN] [ICQ]
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Eu acho melhor vc ter só a classe e criar os métodos de listagem nela mesmo.
deixe o contrutor private, para só ter as opções necessárias.
Com contrutor public alguem pode criar um tipo novo e burlar o constraint.
ex:


O objetivo deste pattern é restringir a criação de tipos pelo usuário da classe.
Isso pode acarretar problemas graves...

This message was edited 2 times. Last update was at 08/06/2005 17:14:28


O bom menino !!!
caiosiqueira
Debugger

Membro desde: 08/05/2004 20:50:22
Mensagens: 68
Localização: Rio de Janeiro / RJ
Offline

No caso, se eu deixar o construtor da classe abstrata como publica, e da classe concreta como abstrata, acho que resolveria este problema, concorda?

Atenciosamente,

Caio Tácito Siqueira de Abreu
Analista/Desenvolvedor Java
Rio de Janeiro - Brasil
[MSN] [ICQ]
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

caiosiqueira wrote:
No caso, se eu deixar o construtor da classe abstrata como publica, e da classe concreta como abstrata, acho que resolveria este problema, concorda?


Vc quis dizer private.
Resolve.
Mas esse negocio de interface e classe abstrata pode complicar um pouco.
Por que motivo vc quer isso ?

O bom menino !!!
caiosiqueira
Debugger

Membro desde: 08/05/2004 20:50:22
Mensagens: 68
Localização: Rio de Janeiro / RJ
Offline

Realmente, confundi as bolas... Seria Private na classe abstrata, e public na classe concreta.

Gostaria de fazer desta forma, pois iria possuir vários tipos de coleções de constantes. Desta forma pretendia diminuir o trabalho na implementação e a duplicação de código.

Mais não precisarei mais utilizar este artifício. Um dos Analistas do projeto resolveu colocar estes dados em uma tabela do banco de dados. Viu que iria ser mais fácil de se trabalhar

De qualquer forma valeu pela ajuda amigo.

Atenciosamente,

Caio Tácito Siqueira de Abreu
Analista/Desenvolvedor Java
Rio de Janeiro - Brasil
[MSN] [ICQ]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team