Junior
La ce pattern aparține MVVM?
sobes.tech AI
Răspuns de la AI
Model-View-ViewModel.
Responsabilitățile componentelor:
- Model: Reprezintă datele și logica de afaceri. Nu cunoaște View sau ViewModel.
- View: Afișează datele și trimite acțiunile utilizatorului către ViewModel. Nu conține logică de afaceri.
- ViewModel: Leagă Model și View. Conține logica de prezentare, transformă datele din Model pentru View și gestionează acțiunile utilizatorului. Nu are referințe directe la View, interacțiunea se face adesea prin binding-uri sau modele de notificare (de exemplu, ObservableObject în SwiftUI).
Relația dintre componente:
- View se abonează la modificările din ViewModel.
- ViewModel actualizează View-ul la schimbarea datelor din Model sau la procesarea acțiunilor utilizatorului.
- ViewModel interacționează cu Model pentru a obține sau salva date.
Exemplu de implementare (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 = "Nume: \(user.name)"
self.userAge = "Vârstă: \(user.age)"
}
}
// View
import SwiftUI
struct UserView: View {
@ObservedObject var viewModel: UserViewModel
var body: some View {
VStack {
Text(viewModel.userName)
Text(viewModel.userAge)
}
}
}