MVC (Desktop) - Dúvida de interação!

Boa Noite! :grin:

Há alguns dias, pesquisei muito sobre o MVC (desde sua aplicação no Smalltalk até hoje em aplicações Java). Surgiram, então, dúvidas cruéis sobre a interação das partes na hora de sua implementação (em Desktop / Swing). Observe as duas imagens em anexo neste tópico.

Baseado no conceito de: “Desacoplar as partes do MVC de forma que ao precisar trocar ou modificar uma das parte isso não influenciará em modificações nas demais partes, tornando assim o sistema escalável e com maior facilidade de manutenção.” Como tornar isso implementável?

Como exemplo vamos imaginar um sistema de cadastro qualquer, sem persistencia, dividido em MVC (Modelo, Visão e Controle).

Surgem então as perguntas:

  1. O main, deverá chamar quem (instaciar): O Controle e/ou a Visão e/ou o Modelo?
  2. O Controle interage com quem? (instancia Modelo e/ou Visão?) De que forma?
  3. A Visão interage com quem? (instancia Controle e/ou Modelo?) De que forma?
  4. Quando o Modelo for alterado, quem vai alterar a Visão? De que forma? (Visão vai instanciar Modelo??? como implementar)
  5. Restrições de dados inválidos (tipo inválido de dado para um atributo do modelo) serão bloqueados na Visão?
  6. Como estamos baseados em um cadastro, o métodos CRUD ficarão no Controle?
  7. Quem vai avisar a Visão se uma das 4 operações do CRUD foi executada com sucesso ou não?

Respondida as perguntas, questiono: Olhando agora as respostas, o sistema realmente será implementado no padrão MVC a tal modo de poder a qualquer momento, baseado no conceito citado acima, passa-lo para WEB simplesmente trocando a minha Visão(GUI)?

Para fechar, observando as imagens em anexo deixo mais duas perguntas:
8- No View, observa-se a citação “Renderiza o Model”. O que é isso?
9) Qual seria o caminho (fluxo) feito pelo sistema de cadastro se eu quiser agora alterar dados que já estão no Modelo?
10) Para um Modelo ser um Bean, ele precisa ter obrigatoriamente um construtor vazio?

Felicidades a todos do fórum, sou novo aqui e espero poder compartilhar com todos informações de interesse geral. Um feliz 2009 com bastante saúde e sucesso. Obrigado! :wink:

Não gosto de dar o peixe, prefiro ensinar a pescar.

Dá uma olhada em:


http://csis.pace.edu/~bergin/mvc/mvcgui.html
http://www.developer.com/java/ent/article.php/3336761

Vai também algumas dicas:

  1. Não é comum existir aplicações MVC em Java geralmente essas aplicações utilizam o padrão MODELO-2 (criado pela e SUN tendo o MVC como base).
  2. Modelo-2 é diferente do MVC porque a View não consulta diretamente o Model
  3. Migrar uma aplicação “MVC” Swing para Web não é só trocar o View se lembre que o Controler também é diferente.

Olá Evandro! Obrigado pela resposta! :grin:

Rapaz, eu vi os links que você indicou. O primeiro já havia visto anteriormente, muito bom. O segundo link explica como utilizar o Observer no MVC.
Já havia visto sobre o Observer só que tem uma coisa ruim nele que usa a única herança que temos na classe.
O terceiro link já achei mais interessante porém mesmo assim continuo com as mesmas dúvidas do primeiro post, infelizmente. :cry:

O modelo-2 que você diz é o MVP? Tem algum artigo sobre o modelo-2?
Valew Evandrão, fico no aguardo.

E peço a todos que puderem ajudar questionando as perguntas do primeiro tópico, as demais respostas, enviando links com material de estudo ou qualquer outra forma que ajude a entender como funciona realmente a interação do MVC na hora da implementação será muito bem vindo! Muito obrigado galera. :razz: