Junior
Millisele mustrile kuulub MVVM?
sobes.tech AI
Vastus AI-lt
Model-View-ViewModel.
Komponentide vastutus:
- Model: Esindab andmeid ja äriloogikat. Ei tea View või ViewModel kohta.
- View: Näitab andmeid ja saadab kasutaja tegevused ViewModelile. Ei sisalda äriloogikat.
- ViewModel: Ühendab Modeli ja View. Sisaldab esitlusloogikat, teisendab Modelist pärit andmeid View jaoks ja töötleb kasutaja tegevusi. Ei oma otseseid viiteid View-le, suhtlus toimub sageli sidumiste või teavitamismustrite kaudu (näiteks, ObservableObject SwiftUI-s).
Komponentide vahelised suhted:
- View tellib muutused ViewModelis.
- ViewModel uuendab View-d, kui andmed Modelist muutuvad või kui kasutaja tegevusi töödeldakse.
- ViewModel suhtleb Modeliga andmete saamiseks või salvestamiseks.
Näide rakendamisest (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 = "Nimi: \(user.name)"
self.userAge = "Vanus: \(user.age)"
}
}
// View
import SwiftUI
struct UserView: View {
@ObservedObject var viewModel: UserViewModel
var body: some View {
VStack {
Text(viewModel.userName)
Text(viewModel.userAge)
}
}
}