Sobes.tech
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)
        }
    }
}