Melhores práticas: verificar restrição de fontes de dados diversas  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
peron
JavaGuru
[Avatar]

Membro desde: 09/06/2005 09:39:31
Mensagens: 236
Localização: Blumenau/SC
Offline

Prezados Senhores,

Estou enfrentando uma dificuldade de melhor modelagem de um sistema. Analisei os diversos padrões de projeto e não visualizei saída para o problema.

Tenho um sistema que verifica na base de dados algumas restrições, mas também pode checar de outras fontes como, por exemplo, data do sistema. Pensando em ser customizável, fiz a seguinte estrutura:


Caso retorne falso, é porque não foi validada a expressao. Tenho implementada alguns limites, como:



Para criar uma lista de Limites carrego de um XML usando XStream e tenho um método checkAll que percorre tal lista.

Então, baseado nessa estrutura, como vou passar para a classe LimiteQtdPessoas a conexao, visto que ela faz consulta no BD e retorna. Qual a melhor arquitetura para isso? Dependency Injection fica complicado, pois quem instancia meu objeto é o XStream. A classe de negócio faz a consulta usando uma chamada ao DAO?

Qual o conselho de vocês?

Grato

Peron

Marcos Peron
http://www.marcosperon.com





"Dizem que, no início, Deus criou o céu e a Terra. Mentira! Na verdade, no início Deus criou Java. Onde achas que ele programou o mundo, oras?"
[WWW] [Yahoo!] [MSN] [ICQ]
gomesrod
GUJ Ranger
[Avatar]

Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline

Creio que a solução mais coerente é o próprio objeto "Limite" chamar algum Dao (ou equivalente).

Se quem chama essas validações (algum código de negócio) tiver que passar a conexão, significa que ele tem que saber sobre essa conexão (e gerenciá-la!), o que não é bom.
Na verdade essa classe não deve nem saber que a LimiteQtdPessoas vai utilizar uma conexão com banco de dados! Para ela, tanto a LimiteData quanto a LimiteQtdPessoas são iguais.

A LimiteQtdPessoas é quem "sabe" que para fazer seu trabalho será necessário uma consulta à base de dados, e chama o Dao. O Dao, por sua vez, é quem deverá saber como obter a conexão.

EDIT:
Complementando: Se sua preocupação é a performance (evitar que cada validação chame sua própria conexão), essa é uma preocupação válida mas quem tem que cuidar disso é o mecanismo de gerenciamento de conexões, e não a classe de negócio.

This message was edited 1 time. Last update was at 21/12/2009 13:08:06

 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team