Sobes.tech
Junior — Middle

Vysvetlite hlavný rozdiel medzi architektonickými vzormi MVC a MVVM.

sobes.tech AI

Odpoveď od AI

Hlavný rozdiel medzi MVC (Model-View-Controller) a MVVM (Model-View-ViewModel) spočíva v spôsobe, akým je naviazané spojenie medzi zobrazením (View) a logikou rozhrania.

  • MVC: Kontrolér prijíma vstup používateľa, aktualizuje model a následne aktualizuje zobrazenie. View a Controller sú úzko prepojené a aktualizácia View sa zvyčajne vykonáva manuálne.

  • MVVM: ViewModel pôsobí ako sprostredkovateľ medzi View a Modelom. View je naviazané na vlastnosti ViewModelu prostredníctvom mechanizmu data binding, čo umožňuje automatickú aktualizáciu UI pri zmene dát bez explicitných volaní na aktualizáciu.

Prí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));
}

Tu, ViewModel oznamuje View o zmenách, čo uľahčuje synchronizáciu dát a UI.