Junior
MVVM ба кадом намуна тааллуқ дорад?
sobes.tech AI
Ҷавоб аз AI
Model-View-ViewModel.
Масъулиятҳои компонентҳо:
- Model: Маълумот ва бизнес-мантиқро намояндагӣ мекунад. Дар бораи View ё ViewModel намедонад.
- View: Маълумотҳоро намоиш медиҳад ва амалҳои корбарро ба ViewModel мефиристад. Мантиқи бизнесро дар бар намегирад.
- ViewModel: Модел ва View-ро пайваст мекунад. Мантиқи пешкашро дорад, маълумотҳоро аз Model барои View табдил медиҳад ва амалҳои корбарро коркард мекунад. Ба View мустақиман пайваст нест, алоқа одатан тавассути пайвандҳо ё намунаҳои огоҳӣ (масалан, ObservableObject дар SwiftUI) сурат мегирад.
Муносибати байни компонентҳо:
- View ба тағиротҳо дар ViewModel обуна мешавад.
- ViewModel вақте ки маълумотҳо дар Model тағир меёбанд ё амалҳои корбарро коркард мекунад, View-ро навсозӣ мекунад.
- 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)
}
}
}