Sobes.tech
Junior — Middle

Wyjaśnij główną różnicę między wzorcami architektonicznymi MVC i MVVM.

sobes.tech AI

Odpowiedź od AI

Główna różnica między MVC (Model-View-Controller) a MVVM (Model-View-ViewModel) polega na tym, jak odbywa się połączenie między widokiem (View) a logiką interfejsu.

  • MVC: Kontroler przyjmuje dane wejściowe od użytkownika, aktualizuje model, a następnie aktualizuje widok. View i Controller są ściśle powiązane, a aktualizacja View zazwyczaj odbywa się ręcznie.

  • MVVM: ViewModel działa jako pośrednik między View a Modelem. View jest powiązany z właściwościami ViewModel za pomocą mechanizmu data binding, co pozwala na automatyczną aktualizację UI przy zmianie danych bez wywołań jawnych funkcji aktualizacji.

Przykład w C# z użyciem MVVM i 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));
}

Tutaj, ViewModel powiadamia View o zmianach, co upraszcza synchronizację danych i UI.