Quais são os problemas do padrão MVVM?

votos
16

Model-View-ViewModel é o melhor padrão para usar em WPF? Existem quaisquer desvantagens?

Publicado 19/05/2009 em 17:51
fonte usuário
Em outras línguas...                            


5 respostas

votos
21

Aqui está um bom, curto post sobre as vantagens e desvantagens de MVVM , direto do próprio João Gossman.

Suas principais desvantagens são:

"Para simples UI, MV-VM pode ser um exagero. Em casos maiores, pode ser difícil para projetar o ViewModel na frente, a fim de obter a quantidade certa de generalidade. Dados vinculativo para todas as suas maravilhas é declarativa e mais difícil de depurar do que nice stuff imperativo onde você acabou de definir pontos de interrupção"

Respondeu 19/05/2009 em 18:08
fonte usuário

votos
7

Para construir nossa aplicação, nós começamos com MVVM, mas depois de ter muitos dos problemas que desistiu de MVVM por causa de razões seguintes que identificam onde não usar MVVM.

Problema herança

Nós programar em .NET, e nós usamos C # e melhor temos certeza que quer Herança. C # não suporta herança de classe múltipla, por isso não podemos ter classes abstratas com lógica que vai ser parcialmente reutilizados em UI, bem como a lógica.

Na maioria das vezes estamos confusos, como projetar Ver modelos para que possamos herdar e controlar a lógica.

Se herdamos View, não podemos herdar ViewModel mesmo tempo, e se nós herdamos ViewModel então não podemos herdar Ver ao mesmo tempo. Em vez disso, temos que usar os genéricos muito complicado e com a ajuda de ferramentas como o Prism e Unidade que podemos alcançar, mas não vale a pena o tempo.

ViewModel para ViewModel Encadernação

Bem, a maioria de lógica negocial tempo is not tão simples como A = B + C, UI e Resposta em UI desempenha um papel enorme. No entanto, podemos vincular as propriedades visuais da interface do usuário para exibir as propriedades de dados do modelo, mas pergunta vem sobre como realmente se ligam modelo de uma vista para outra modelo de vista, e se eles passam por duas ligações de controles compartilhados, então não temos idéia do que será executado primeiro.

ViewModel não é simples substituição de CodeBehind

Supõe-se que ViewModel é simples substituição de arquivos CodeBehind. Mas ao fazer a nossa aplicação, restrição sobre herança nos ensinou que, como é WPF / Silverlight suporta Estilo UI que podem UI completamente separado com a lógica, que são pouco mais de separar a lógica de negócios em ViewModel.

Repetido Código em ViewModel

Nós finalmente percebeu que estamos apenas escrevendo mesmo padrão de código em cada exibição e cada ViewModel, mudança que se torna uma dor enorme, e manutenção é uma dor também. MVVM é mais adequado para o desenvolvimento orientado a testes, mas quando se trata de escrever componentes extensíveis, eles não são o melhor candidato.


WPF / Silverlight já permite separar código e UI muito bem, nós, na verdade agora projetamos hierarquia de classe muito simples que executa lógica de negócios e dar-nos tudo o que precisamos. Vamos agora criar todas as propriedades de comando baseada ICommand como propriedades de dependência de nossas classes, que se ligam dentro de UserControl, bem como controle modelo.

ICommand no CodeBehind ou Modelo e estilos em ResourceDictionary nos dá quase todos os benefícios de que podemos superar MVVM.

Respondeu 19/03/2011 em 17:30
fonte usuário

votos
6

É um grande padrão e, francamente, um dos poucos UI lavado padrões para WPF. O que quero dizer com isso é que muitas pessoas entendem e adotaram-lo. Portanto, é relativamente fácil de obter ajuda e informações sobre ele.

A maior desvantagem na minha opinião é que ela aumenta o número de classes e componentes em sua aplicação, porque SRP supera DRY neste padrão. Dito isto, eu acho que vale a pena.

Respondeu 19/05/2009 em 22:15
fonte usuário

votos
3

Sim, é um exagero para aplicações de estilo pequeno mundo hello.

Respondeu 19/05/2009 em 17:58
fonte usuário

votos
1

Diferentes padrões têm diferentes pontos fortes. As pessoas tendem a confundir o padrão com a implementação. Como a lógica do negócio é organizado ou acessado tem uma influência sobre qual padrão é mais natural para uma aplicação dar. Assim, embora esta questão pergunta sobre WPF pode ser útil para ler cerca de três padrões usados ​​para impliment mesma tela três vezes em qualquer quadro.

Abaixo está um link para um artigo de java que compara MVVM ( "modelo de apresentação") com MVP ( "visão passiva") e uma implementação híbrida MVVMP / MVC ( "supervisão do controlador"). Eu acredito que isso é relevante a esta pergunta, pois tem uma seção que tem uma comparação dos padrões.

Implementar padrões GUI orientada a eventos utilizando o framework ZK Java AJAX

Ele aponta a fraqueza que John Gossman faz, mas também vai em comparar os dois pontos fortes e fracos com dois padrões alternativos.

Respondeu 24/09/2012 em 15:40
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more