Sobes.tech
Junior

Kuriam modeliui priklauso MVVM?

sobes.tech AI

Atsakymas iš AI

Model-View-ViewModel.

Komponentų atsakomybės:

  • Modelis: Atstovauja duomenis ir verslo logiką. Nežino apie View ar ViewModel.
  • View: Rodo duomenis ir siunčia naudotojo veiksmus į ViewModel. Nėra verslo logikos.
  • ViewModel: Jungia Modelį ir View. Turi prezentacijos logiką, paverčia duomenis iš Modelio į View ir tvarko naudotojo veiksmus. Turi tiesioginių nuorodų į View, sąveika dažnai vyksta per binding'us arba pranešimų modelius (pvz., ObservableObject SwiftUI).

Komponentų ryšys:

  • View prenumeruoja pokyčius ViewModel.
  • ViewModel atnaujina View, kai keičiasi duomenys iš Modelio arba kai tvarko naudotojo veiksmus.
  • ViewModel sąveikauja su Modeliu duomenų gavimui arba išsaugojimui.

Pavyzdys įgyvendinimo (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 = "Vardas: \(user.name)"
        self.userAge = "Amžius: \(user.age)"
    }
}

// View
import SwiftUI

struct UserView: View {
    @ObservedObject var viewModel: UserViewModel

    var body: some View {
        VStack {
            Text(viewModel.userName)
            Text(viewModel.userAge)
        }
    }
}