MVC - Maneira de Validar e Comunicar! (Pergunta Simples)

5 respostas
P

Olá companheiros do Portal Java! :grin: Dúvida Simples de Java SE (Desktop).

Vamos nos basear em que:

O controle não é “ponte” entre visão e modelo, o controle só existe para receber estímulos da visão (ou seja, quando o usuário mexe na tela), que invoca ações no modelo, nada mais. Quando, por exemplo, for o caso da visão que se renderiza “lendo” o model, não há controle intermediando, o acesso é direto mesmo, e não há nada de errado nisso. Entendam que a premissa do MVC é do modelo não depender da visão, porque este muda frequentemente. Mas o contrário não é verdadeiro, porque o modelo tende a ser mais estável.

Entende-se então que o controle não vai, de forma alguma, dar set’s (atualizar algo) na visão. Concorda?

Modelo model = new Modelo();
Visao view = new Visao(model);
Controle control = new Controle(view, model);

Se é assim realmente, tenho algumas dúvidas. São elas:

1ª Validar) Quando o controle pegar os dados vindos da visão (jtextfields.getText()) e validar (tipos, tamanho, validarCPF, etc…) se algum dados não passar na validação, como vou mostrar isso ao usuário, já que a view só se atualiza com base no modelo?

2ª Comunicar) Como e Quando a visão saberá que o modelo foi alterado?

Agradeço antecipadamente a colaboração, sugestão, opinião ou somente a leitura do tópico! :wink:
Fico no aguardo pelas respostas!

5 Respostas

P

Nada mesmo? Nem uma idéia?

P

Q coisa não! 8O

L

Meu caro,

Acho que há alguns tipos de validações, p. x verificar se o campo é vazio, formato de data/hora, etc que vc pode fazer na própria view porque faz parte do funcionamento interno da view , da lógica da mesma; outros tipos seriam verificar se o cliente é cadastrado,verificar estoque , etc que vc teria que fazer usando o modelo.

Com relação a atualização do modelo uma das formas é através do padrão Observer ou através de Listener´s.

Se vc vc está pensando em termos de desktop um ótimo artigo :

http://www.javafree.org/artigo/871446/

Renato

P

Olá Renato, obrigado por estar acompanhando o tópico!

É acredito que seja melhor desenvolver um sistema já baseado na web mesmo rodando localmente, seguindo o MVC 2… e esquecer o MVC (aquele do Smalltalk).

Olha tenho três computadores em rede. Digamos que o computador 1 faz o papel de servidor. O computador 2 e 3 rodam o aplicativo que está no computador 1.
Nos computadores 2 e 3 estão com a view de um mesmo produto em aberto. Então o computador 3 altera a quantidade do produto e a sua view é atualizada.
Alguém sabe dizer se o computador 2 (lembrando que o aplicativo que está rodando no computador 1 foi implementado com MVC + Observer) vai atualizar a view para a quantidade correta ou computadores 2 e 3 terão view’s com quantidades diferentes? (assim como ocorreria em uma aplicação WEB)

Agradeço desde já todas as ajudas! São muito bem vindas!

T

Deus diga que estou falando besteira, mas acho que isso não é tão simples assim.!

Mas há dois pontos que vou comentar.!

Se neste momento que voce altera um valor do micro 2 e ele deveria alterar a VIEW do micro 3 for uma tela de monitoramento, BSC, acredito que deva mesmo implementar sua aplicacao para ela sempre ver se o valor foi alterado (apesar que nunca vi isso rodando em nenhum programa ate hoje.!)

Agora se for uma tela simples, um formulario de uso como movimentacao de algo, será que é tão primordial que ele atualize sua tela sempre que houver atualizacoes nestes registros?

Cara, num sistema grande, voce vai trafegar tantos pacotes e fazer tantas verificacoes no banco (modelo) pra isso, que diria que nao compensa o crime.!
Imagina uma grande empresa onde dados relativos sao apontados a todo instante.! Quantos checks iriam ser feitos para manter apenas uma tela, ou melhor um campo bem atualizado.

Creio que uma verificacao posterior seria uma boa escolha.!

Sei que sua pergunta é mais técnica… mas…

Se eu nao entendi, melhor ainda.! gostei do topico… pow

Criado 13 de junho de 2009
Ultima resposta 3 de ago. de 2009
Respostas 5
Participantes 3