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.