Junior
Kuriam modeliui priklauso MVVM?
sobes.tech AI
Atsakymas iš AI
Model-View-ViewModel.
Komponentų atsakomybės:
- Modelis: Atstovauja duomenis ir verslo logiką. Nežino apie View ar ViewModel.
- View: Rodo duomenis ir siunčia naudotojo veiksmus į ViewModel. Nėra verslo logikos.
- ViewModel: Jungia Modelį ir View. Turi prezentacijos logiką, paverčia duomenis iš Modelio į View ir tvarko naudotojo veiksmus. Turi tiesioginių nuorodų į View, sąveika dažnai vyksta per binding'us arba pranešimų modelius (pvz., ObservableObject SwiftUI).
Komponentų ryšys:
- View prenumeruoja pokyčius ViewModel.
- ViewModel atnaujina View, kai keičiasi duomenys iš Modelio arba kai tvarko naudotojo veiksmus.
- ViewModel sąveikauja su Modeliu duomenų gavimui arba išsaugojimui.
Pavyzdys įgyvendinimo (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 = "Vardas: \(user.name)"
self.userAge = "Amžius: \(user.age)"
}
}
// View
import SwiftUI
struct UserView: View {
@ObservedObject var viewModel: UserViewModel
var body: some View {
VStack {
Text(viewModel.userName)
Text(viewModel.userAge)
}
}
}