DEV Community

Luis Lemos
Luis Lemos

Posted on

MVC, MVP e MVVM

MVC

O padrão MVC (Model-View-Controller) é um estilo arquitetural baseado na divisão em camadas, que desacopla a lógica da interface, do controlador e do domínio. Esse desacoplamento resulta na separação dos objetos de domínio dos objetos de negócio.

MVC image

Pontos positivos:

  • Facilidade na manutenção
  • Maior coesão entre os objetos de apresentação e o domínio de negócios

Pontos negativos

  • O controller ainda pode acumular lógica de negócios e ficar fortemente relacionado à view, o que pode reduzir a flexibilidade e dificultar a reutilização de código

Esse modelo teve grande influência no desenvolvimento de frameworks populares, como:

MVVM

O MVVM (Model - View - ViewModel) é uma variação do padrão MVC, onde ocorre a separação entre a lógica de negócios e a camada de apresentação. Isso facilita o desenvolvimento, os testes e a manutenção. Assim como no MVC, o Model é responsável por armazenar dados e a lógica de negócios, enquanto a View é responsável pela interface do usuário. A diferença está no ViewModel, que atua como o "modelo de visualização", fornecendo funções, comandos e métodos para dar suporte à View.

MVVM image

Pontos positivos:

  • Facilidade na manutenção

Pontos negativos:

  • Curva de aprendizado
  • Complexidade do ViewModel

Esse modelo é utilizado em frameworks, como:

  • Angular
  • Vue.js
  • Xamarin.Forms
  • WPF

MVP

O MVP (Model-View-Presenter) possui o Model, responsável pela lógica de negócios, a View, encarregada da interface de usuário, e o Presenter, que atua como mediador entre as duas partes.

MVP image

Pontos positivos

  • Maior simplicidade nas ações, graças ao papel central do Presenter na comunicação entre o Model e a View.

Pontos negativos

  • Dificuldade na manutenção do código e alta imprevisibilidade, especialmente em projetos maiores.

Esse modelo é utilizado em frameworks como:

  • Windows Forms

Top comments (2)

Collapse
 
brunotalcantara profile image
Bruno Theodoro

👏👏

Collapse
 
igorpimentelg profile image
Igor Pimentel

Muito boa a explicação 👏