[quote=rderoci]Olá pessoal, sou novo aqui e estou cheio de dúvidas… Já lí boa parte do Tópico mas as dúvidas persistem, são elas:
Quanto ao Fluxo do MVC e MVP:
MVC:
- O Controller recebe ações do usuário, nunca a view?
- O Controller apenas delega o eventos recebidos da View atualizando o Modelo?
- Quem notifica a view das mudanças realizadas no Model pelo Controller: O controller? Através do Observer? Ou pelos dois, dependendo de algo que eu não sei? rs
- O Controller fala com a visão?
MVP:
- A View é quem recebe ações do usuário, nunca o Presenter?
- A view notifica o Presenter que delega a atualização/consulta ao Model?
- Quem notifica a view das mudanças realizadas no Model pelo Presenter: O Presenter? Através do Observer? Ou pelos dois, dependendo de algo que eu não sei? rs
- O presenter fala com a visão?
Queria saber o processo de cada um deles, assim conseguiria entender mais dos dois e conseguiria tirar uma outra dúvida, qual a diferença entre os 2?
Valeu;[/quote]
O Pedro já respondeu , mas eu queria apenas emendar o seguinte. “Oficialmente” é a View que recebe os eventos do usuário como os cliques e aperto de teclas.
Esses eventos são enviados ao controlador (no mvc) e ele decide o que fazer ( por isso que é o controlador) em relação ao modelo. Ou seja, se deve mudar ou não o modelo.
Por exemplo, quando vc usa um TextField e aperta uma letra a view recebe esse evento e o repassa ao controlador, o controlador então decide passar isso ao modelo (a classe Documet)
O modelo então se atualiza, ou não e se sim, envia um evento. A view recebe esse evento e se re-renderiza para mostrar a letra. VEja que ela não mostra a letra até que o modelo o diga.
No mvp é semelhante, a view recebe os eventos de clique e aperto de teclas, mas agora ela vai transformar isso em gestos. Gestos são eventos que significam algumas coisa especial como salvar, sair, gravar, recarregar, imprimir, etc… e passa esses gestos ao Presenter. A view do mvp é mais inteligente que a do mvc. Ela sabe traduzir cliques “puros” em eventos com significado.
O presenter então responde a esses eventos sem ter que os intrepretar.
a diferença é que o MVC é usado para coisa baixo nivel e por isso é excelente para criar o cliente gráfico ( andar cliente) Mas o cliente é burro. Ele sabe que tem que reagir mas não sabe ao quê está reagindo. O MVP é mais alto nivel ( andar apresentação). O V do mvp pode conter toda uma estrutura sofisticada que pode incluir o MVC inteiro. É isso que vc faz quando usa swing. Vc cria o cliente swing e amarra algumas coisas, o resto vc deixa para outro alguem decidir. Mas todo o cliente swing é a sua view, o decisor é o Presenter. ( Veja, camada de apresentação => presenter)
É importante ter a noção que é a view que recebe os eventos do usuário. É ela que sabe destingir um clique em um butão de um clique numa imagem ou de apertar uma tecla. O fato de ser o controlador ou o presenter a decidir o que fazer, não tira o mérito de ser a view o unico elo de ligação que o usuário tem. A view é o que ele “vê” e ele só vê a view. Digo “vê” por que na realidade a placa de som tb faz parte da view não apenas a tela.