Usar o padrão MVVM (Model-View-ViewModel)

Usar o padrão MVVM (Model-View-ViewModel)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

O MVVM (Model-View-ViewModel) é um padrão de design de aplicativo para desacoplar código da interface do usuário e código que não pertence à interface do usuário. Com o MVVM, você define sua declaratividade da interface do usuário (por exemplo, usando XAML) e usa marcação de vinculação de dados para vinculá-los a outras camadas que contêm dados e comandos do usuário. A infraestrutura de vinculação de dados fornece um acoplamento flexível que mantém sincronizados a interface do usuário e os dados vinculados e encaminha todas as entradas do usuário para os comandos apropriados.

O padrão MVVM organiza o código para que você possa alterar partes individuais sem afetar outras. Isso apresenta muitos benefícios:

  • Habilitação de um estilo de código iterativo e exploratório.
  • Simplificação do teste de unidade.
  • Melhor proveito das ferramentas de design, como o Expression Blend.
  • Colaboração da equipe de suporte.
Em contraste, um aplicativo com uma estrutura mais convencional usa vinculação de dados apenas para controles de lista e texto e responde à entrada do usuário manipulando eventos expostos pelos controles. Os manipuladores de eventos são estritamente acoplados aos controles e geralmente contêm código que manipula a interface do usuário diretamente. Isso dificulta ou impossibilita a substituição de um controle sem precisar atualizar o código de manipulação de eventos.

Camadas de aplicativo

Quando você usa o padrão MVVM, um aplicativo é dividido nas seguintes camadas:

  • A camada model inclui todo o código que implementa a lógica central do aplicativo e define os tipos necessários para modelar o domínio do aplicativo. Essa camada é completamente independente das camadas view e view model.
  • A camada view define a interface do usuário usando a marcação declarativa. A marcação de vinculação de dados define a conexão entre os componentes específicos da interface do usuário e vários membros de view model (e, às vezes, de model).
  • A camada view model fornece destinos de vinculação de dados para a camada view. Em muitos casos, view model expõe a camada model diretamente ou fornece membros que encapsulam membros específicos da camada model. A camada view model também pode definir membros para controlar os dados que sejam relevantes à interface do usuário, mas não à camada model, como a ordem de exibição de uma lista de itens.

Os benefícios das camadas

Um benefício da separação de camadas é que ela facilita o entendimento do código. Isso porque o código de recursos específicos geralmente é separado de outro código, o que facilita seu entendimento e reutilização em outros aplicativos. Por exemplo, com o aplicativo de exemplo Reversi, se você estiver interessado somente nos conceitos da interface do usuário e não quiser saber da inteligência artificial do jogo, poderá ignorar a camada model. Se quiser ver como determinada animação funciona, poderá encontrá-la em um único arquivo XAML, separada de todo o código C#.

Outro benefício importante da separação da interface do usuário é que isso torna o teste automatizado de código que não pertence à interface do usuário muito mais fácil do que seria sem a separação. O Microsoft Visual Studio permite projetos de teste de unidade que você pode usar para verificar o design do código durante o desenvolvimento, identificar e diagnosticar bugs. Para saber mais, veja Entender a estrutura do aplicativo Reversi: testes de unidade.

Em geral, uma arquitetura estritamente acoplada dificulta a implementação de alterações e o diagnóstico de erros. O principal benefício de uma arquitetura desacoplada é isolar o impacto das alterações, tornando muito menos arriscado experimentar novos recursos, fazer correções de bugs e incorporar contribuições de colaboradores.

MVVM básico e avançado

A amostra Reversi demonstra como criar uma estrutura de aplicativo MVVM básico usando vinculação de dados XAML padrão, sem a necessidade de ter conhecimentos prévios sobre o padrão. Para saber mais, veja Saiba como a amostra de Reversi usa os recursos de aplicativo da Windows Store: vinculação de dados e Entender a estrutura do aplicativo Reversi.

Há muitas técnicas e estruturas avançadas de MVVM que se tornam úteis à medida que o aplicativo fica mais complexo; porém, a abordagem básica descrita nos tópicos do Reversi é importante para aprender o padrão fundamental. O uso de técnicas simples de MVVM também pode ajudar a manter a flexibilidade do código durante os estágios iniciais do desenvolvimento, evitando infraestrutura extra até que o aplicativo realmente precise dela.

Para saber mais sobre como o padrão é usado pelas tecnologias relacionadas, veja:

Tópicos relacionados

Reversi, um jogo da Windows Store em XAML, C# e C++
Aplicativo de exemplo Reversi

 

 

Mostrar:
© 2017 Microsoft