Sobes.tech
Junior

MVVM кай шаблонго тиешелүү?

sobes.tech AI

AIден жооп

Model-View-ViewModel.

Компоненттердин жоопкерчиликтери:

  • Model: Маалыматтарды жана бизнес логиканы көрсөтөт. View же ViewModel жөнүндө билбейт.
  • View: Маалыматтарды көрсөтөт жана колдонуучунун аракеттерин ViewModelге жиберет. Бизнес логикасын камтыбайт.
  • ViewModel: Model жана 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)
        }
    }
}