O que MVVM? Entenda o Model-View-ViewModel
MVVM separa a interface (View) da lógica (Model) em softwares. A ViewModel atua como ponte entre View e Model, gerenciando a interação e o fluxo de dados. Isso torna o código mais organizado, testável e reutilizável.
Tópicos deste artigo
MVVM é um padrão de design para separar interface, lógica e dados em softwares. A View é a interface gráfica, a ViewModel liga a View à Model, que contém a lógica e os dados.
Resposta Rápida
MVVM é um padrão de arquitetura que separa interface, lógica e dados em três componentes: Model (dados e regras de negócios), View (interface do usuário) e ViewModel (intermediário que gerencia a lógica de apresentação). Desenvolvido pela Microsoft para WPF e Silverlight, utiliza data binding bidirecional para sincronização automática. Seu objetivo central é desacoplar a UI da lógica, permitindo maior testabilidade, manutenibilidade e reutilização de código. O ViewModel expõe dados específicos para a View sem depender dela, reduzindo acoplamento.
O que é MVVM – Model View ViewModel?
Model-view-viewmodel (MVVM) é um padrão de arquitetura de software ou esquema de design de software. É uma variante do padrão “Presentation Model Design” de Martin Fowler.
O MVVM abstrai o status “view” e o comportamento. Enquanto o modelo de “apresentação” abstrai uma visão (cria um modelo de visão) de uma maneira que não depende de uma plataforma de interface de usuário específica.

O MVVM foi desenvolvido por Ken Cooper e Ted Peters da Microsoft para simplificar a programação de eventos de interfaces de usuário usando recursos do Windows Presentation Foundation (WPF) (Microsoft .NET Graphical System) e do Silverlight (Derivative Internet Application).
O padrão arquitetônico foi anunciado pela primeira vez no blog John Gossman em 2005.
Model (modelo)
- O modelo no MVVM é uma implementação do modelo de domínio do aplicativo que inclui um modelo de dados juntamente com a lógica de negócios e a lógica de validação.
- Exemplos de objetos de modelo incluem repositórios, objetos de negócios, objetos de transferência de dados (DTOs), objetos CLR antigos e simples (pocos) e objetos gerados por entidades e proxy.
View (visão)
- A visão é responsável por definir a estrutura, o layout e a aparência do que o usuário vê na tela.
- Idealmente, a exibição é definida exclusivamente com XAML, com um número limitado de code-behinds que não contém lógica de negócios.
ViewModel
- O modelo de visão age como um intermediário entre a visão e o modelo, e é responsável por gerenciar a lógica da visão.
- Geralmente, o modelo de visualização interage com o modelo invocando métodos nas classes de modelo.
- O modelo de vista, em seguida, fornece dados do modelo em uma forma que a visão pode facilmente usar.
Binder (fichário)
- O mecanismo fundamental para esse padrão com o qual o modelo de exibição e a exibição são constantemente sincronizados.
- Geralmente por meio de uma sintaxe declarativa dentro da própria exibição.
- Isso implica que as alterações nos dados feitas pelo usuário por meio da visualização serão relatadas automaticamente no modelo de visualização. Sem esse ônus para o desenvolvedor.
Da mesma forma, quaisquer alterações feitas nos dados contidos no modelo de exibição serão representadas automaticamente na exibição.
Mais livros e downloads relacionados
A seguir, recomentamos outros artigos e livros sobre engenharia de software, com discussões essenciais para o sucesso de qualquer projeto de desenvolvimento de software.
- Livro:- Scrum, Kanban e Scrumban
- Livro – “The Design Sprint: O método usado pelo Google”
- Livro “Engenharia de Requisitos: software orientado ao negócio”
- Livro – “Scrum: A arte de fazer o dobro do trabalho na metade do tempo”
- Livro – “UML 2: Uma Abordagem Prática” de Gilleanes T. A. Guedes
- Livro – Código Limpo: Habilidades Práticas do Agile Software (PDF)
Glossário de Termos
MVVM
Padrão de arquitetura de software que separa a interface (View), lógica de apresentação (ViewModel) e dados/lógica de negócios (Model), usando data binding para sincronização automática entre componentes.
Data Binding
Mecanismo de sincronização automática entre a interface (View) e a lógica de apresentação (ViewModel) no padrão MVVM, permitindo atualizações bidirecionais sem código manual.
ViewModel
Componente intermediário no padrão MVVM que gerencia a lógica de apresentação, transformando dados do Model para a View e encapsulando ações da interface.
Presentation Model
Padrão de arquitetura que separa a lógica de apresentação da interface do usuário, servindo como intermediário entre a view e o modelo de dados.
WPF (Windows Presentation Foundation)
WPF é um framework para criar interfaces de usuário em aplicações Windows, utilizando XAML para definição declarativa de UI e suporte a data binding para sincronização automática entre componentes.
INotifyPropertyChanged
Interface que permite notificar mudanças em propriedades de um objeto, essencial para sincronização automática entre View e ViewModel no MVVM. Definição objetiva com contexto técnico, uso prático e relação direta com o artigo.
Separation of Concerns (SoC)
Princípio de design que divide um sistema em componentes distintos, cada um com responsabilidades específicas, facilitando manutenção, testabilidade e reutilização. Definição objetiva com contexto técnico, uso prático e relação direta com o artigo.
Binder
Mecanismo de sincronização automática entre a View e o ViewModel, permitindo atualizações bidirecionais sem código manual. No MVVM, é implementado via data binding.
XAML
Linguagem de marcação declarativa usada para definir interfaces de usuário em WPF e Silverlight, permitindo a criação de layouts e estilos sem código imperativo.
ICommand
Interface no .NET que define um padrão para encapsular ações executáveis, permitindo a associação de comandos a eventos de interface do usuário, como cliques de botão, facilitando a implementação de lógica de interação no MVVM.
Testabilidade
Capacidade de um sistema ou componente ser testado de forma isolada, garantindo que a lógica de apresentação (ViewModel) possa ser verificada sem depender da interface do usuário (View).
Code-behind
Code-behind refere-se ao código imperativo escrito em arquivos separados (e.g., .cs em WPF) para manipular a interface do usuário, geralmente evitado no MVVM para manter a separação clara entre View e lógica de apresentação.
Perguntas Frequentes
O que é MVVM?
MVVM é um padrão de arquitetura de software que separa a interface (View), a lógica de apresentação (ViewModel) e os dados/lógica de negócios (Model).
Quais são os componentes principais do MVVM?
Os componentes principais do MVVM são Model, View, ViewModel e Binder.
Qual é a função do ViewModel no padrão MVVM?
O ViewModel atua como intermediário entre a View e o Model, gerenciando a lógica da visão e fornecendo dados em um formato que a View pode usar facilmente.
O que é o Binder no contexto do MVVM?
O Binder é o mecanismo que sincroniza automaticamente as alterações entre a View e o ViewModel, geralmente por meio de uma sintaxe declarativa dentro da própria exibição.
Quem desenvolveu o padrão MVVM?
O padrão MVVM foi desenvolvido por Ken Cooper e Ted Peters da Microsoft para simplificar a programação de eventos de interfaces de usuário usando recursos do Windows Presentation Foundation (WPF) e do Silverlight.
Qual é a vantagem principal do uso do MVVM?
A principal vantagem do MVVM é a separação clara entre interface, lógica e dados, permitindo maior testabilidade, manutenibilidade e reutilização de código.



