Sobes.tech
Junior — Middle

Explique a principal diferença entre os padrões arquiteturais MVC e MVVM.

sobes.tech IA

Resposta da IA

A principal diferença entre MVC (Model-View-Controller) e MVVM (Model-View-ViewModel) reside na forma como a ligação entre a visualização (View) e a lógica da interface é estabelecida.

  • MVC: O controlador recebe a entrada do utilizador, atualiza o modelo e depois atualiza a visualização. A View e o Controller estão estreitamente ligados, e a atualização da View geralmente é feita manualmente.

  • MVVM: O ViewModel atua como intermediário entre a View e o Modelo. A View liga-se às propriedades do ViewModel através do mecanismo de data binding, o que permite atualizar automaticamente a interface de utilizador quando os dados mudam, sem chamadas explícitas de atualização.

Exemplo em C# usando MVVM e data binding:

public class PersonViewModel : INotifyPropertyChanged
{
    private string name;
    public string Name
    {
        get => name;
        set
        {
            if (name != value)
            {
                name = value;
                OnPropertyChanged(nameof(Name));
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string propertyName) =>
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

Aqui, o ViewModel notifica a View sobre as alterações, o que simplifica a sincronização de dados e UI.