Todos os View Models devem ser acessados através do Main View Model no MVVM?

5

Atualmente estou trabalhando em um aplicativo WP8. Meu design atual é fazer com que cada visualização seja vinculada diretamente a um modelo de exibição específico.

Olhando através das amostras, parece que outra maneira é ter todos os modelos de visualização acessados através do Main View Model e, em seguida, ter todas as visualizações para seus modelos de visualização através do MVM.

Esta é a maneira correta de fazer isso (para que não cause flexibilidade e outros problemas no futuro)?

    
por chustar 25.11.2012 / 22:40
fonte

1 resposta

3

Geralmente, sim, o MVVM leva a uma ligação de 1: 1 entre Views e ViewModels. Não é um requisito, mas parece ser um efeito colateral de como a maioria das pessoas está escrevendo aplicativos estruturados MVVM.

É possível ter um ou mais modos de exibição apontando para o mesmo ViewModel. A VM precisa apenas fornecer as propriedades que a Visualização específica requer para a VM ser útil.

Eu fugiria de um padrão de hub-spoke usando uma VM "principal" que fornece acesso às outras VMs. Parece mais sobrecarga do que o necessário, sem acrescentar muito benefício.

Há um padrão alternativo chamado MVPVM que é uma leitura bastante útil, mesmo se você for para ficar com o padrão MVVM. O MVPVM separa a lógica de negócios da VM e a coloca dentro do Presenter.

O que eu realmente gostei sobre o artigo é que dá a progressão do MVC - > MVP nos dias do smalltalk, então explica como o MVP permaneceu relevante para muitas UI's de hoje e a progressão natural para o MVVM a partir do MVP. O autor dá uma advertência sobre não discutir aplicativos da web, apenas aplicativos de desktop, mas acho que o artigo é amplo o suficiente para que você possa obter os detalhes relevantes, independentemente do seu aplicativo de destino.

    
por 28.11.2012 / 20:53
fonte