Sobes.tech
Junior — Middle

Обяснете основната разлика между архитектурните модели MVC и MVVM.

sobes.tech AI

Отговор от AI

Основната разлика между MVC (Model-View-Controller) и MVVM (Model-View-ViewModel) се състои в начина, по който се осъществява връзката между представянето (View) и логиката на интерфейса.

  • MVC: Контролерът получава входа на потребителя, актуализира модела и след това актуализира изгледа. View и Controller са тясно свързани, а актуализирането на View обикновено се извършва ръчно.

  • MVVM: ViewModel действа като посредник между View и Model. View се свързва с свойствата на ViewModel чрез механизма за data binding, което позволява автоматично обновяване на UI при промяна на данните без явни извиквания за обновяване.

Пример в C# с използване на MVVM и 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));
}

Тук ViewModel уведомява View за промените, което улеснява синхронизирането на данните и UI.