Sobes.tech
Junior

Σε ποιο μοτίβο ανήκει το MVVM;

sobes.tech AI

Απάντηση από AI

Model-View-ViewModel.

Οι ευθύνες των συστατικών:

  • Model: Αντιπροσωπεύει δεδομένα και επιχειρηματική λογική. Δεν γνωρίζει για το View ή το ViewModel.
  • View: Εμφανίζει δεδομένα και στέλνει ενέργειες χρήστη στο ViewModel. Δεν περιέχει επιχειρηματική λογική.
  • ViewModel: Συνδέει το Model και το View. Περιέχει λογική παρουσίασης, μετατρέπει δεδομένα από το Model για το View και χειρίζεται ενέργειες χρήστη. Δεν έχει άμεσες αναφορές στο View, η αλληλεπίδραση γίνεται συχνά μέσω δεσμεύσεων ή μοτίβων ειδοποίησης (π.χ., ObservableObject στο SwiftUI).

Η σχέση μεταξύ των συστατικών:

  • Το View εγγράφεται στις αλλαγές στο ViewModel.
  • Το ViewModel ενημερώνει το View κατά την αλλαγή δεδομένων από το Model ή κατά την επεξεργασία ενεργειών χρήστη.
  • Το ViewModel αλληλεπιδρά με το Model για λήψη ή αποθήκευση δεδομένων.

Παράδειγμα υλοποίησης (SwiftUI):

// Model
struct User {
    let name: String
    let age: Int
}

// ViewModel
import SwiftUI

final class UserViewModel: ObservableObject {
    @Published var userName: String = ""
    @Published var userAge: String = ""

    private let user: User

    init(user: User) {
        self.user = user
        self.userName = "Όνομα: \(user.name)"
        self.userAge = "Ηλικία: \(user.age)"
    }
}

// View
import SwiftUI

struct UserView: View {
    @ObservedObject var viewModel: UserViewModel

    var body: some View {
        VStack {
            Text(viewModel.userName)
            Text(viewModel.userAge)
        }
    }
}