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)
}
}
}