Junior
MVVM qaysi shablon bilan bog'liq?
sobes.tech AI
AIdan javob
Model-View-ViewModel.
Tarkibiy qismlarning mas'uliyati:
- Model: Ma'lumotlar va biznes mantiqini ifodalaydi. View yoki ViewModel haqida bilmaydi.
- View: Ma'lumotlarni ko'rsatadi va foydalanuvchi harakatlarini ViewModelga yuboradi. Biznes mantiqini o'z ichiga olmaydi.
- ViewModel: Model va Viewni bog'laydi. Ta'riflash mantiqini o'z ichiga oladi, Modeldan keladigan ma'lumotlarni View uchun o'zgartiradi va foydalanuvchi harakatlarini boshqaradi. To'g'ridan-to'g'ri View bilan bog'lanmagan, odatda bog'lanishlar yoki bildirishnoma naqshlari orqali (masalan, ObservableObject SwiftUIda) o'zaro ta'sir qiladi.
Tarkibiy qismlar o'rtasidagi bog'lanish:
- View, ViewModeldagi o'zgarishlarni kuzatadi.
- ViewModel, Modeldagi ma'lumotlar o'zgarganda yoki foydalanuvchi harakatlarini boshqarganda Viewni yangilaydi.
- ViewModel, ma'lumotlarni olish yoki saqlash uchun Model bilan hamkorlik qiladi.
Amaliyot misoli (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 = "Ism: \(user.name)"
self.userAge = "Yosh: \(user.age)"
}
}
// View
import SwiftUI
struct UserView: View {
@ObservedObject var viewModel: UserViewModel
var body: some View {
VStack {
Text(viewModel.userName)
Text(viewModel.userAge)
}
}
}