Sobes.tech
Junior — Middle

Vysvětlete hlavní rozdíl mezi architektonickými vzory MVC a MVVM.

sobes.tech AI

Odpověď od AI

Hlavní rozdíl mezi MVC (Model-View-Controller) a MVVM (Model-View-ViewModel) spočívá v tom, jak je navázáno spojení mezi zobrazením (View) a logikou rozhraní.

  • MVC: Řadič přijímá vstup uživatele, aktualizuje model a poté aktualizuje zobrazení. View a Controller jsou úzce propojeny a aktualizace View je obvykle prováděna ručně.

  • MVVM: ViewModel působí jako prostředník mezi View a Modelem. View je navázáno na vlastnosti ViewModelu pomocí mechanismu data binding, což umožňuje automatickou aktualizaci UI při změnách dat bez nutnosti explicitních volání aktualizace.

Příklad v C# s použitím MVVM a 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));
}

Zde ViewModel oznamuje View o změnách, což usnadňuje synchronizaci dat a UI.