Sobes.tech
Junior

Kādai shablonai pieder MVVM?

sobes.tech AI

Atbilde no AI

Model-View-ViewModel.

Komponentu atbildība:

  • Modelis: Attēlo datus un biznesa loģiku. Nezina par View vai ViewModel.
  • View: Parāda datus un nosūta lietotāja darbības uz ViewModel. Nesatur biznesa loģiku.
  • ViewModel: Savieno Modeli un View. Satur prezentācijas loģiku, pārveido datus no Modeļa uz View un apstrādā lietotāja darbības. Tam nav tiešas saites uz View, mijiedarbība bieži notiek caur saistībām vai paziņojumu modeļiem (piemēram, ObservableObject SwiftUI).

Saites starp komponentiem:

  • View abonē izmaiņas ViewModel.
  • ViewModel atjauno View, mainoties datiem Modeļa vai apstrādājot lietotāja darbības.
  • ViewModel sadarbojas ar Modeli, lai iegūtu vai saglabātu datus.

Piemērs (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 = "Vārds: \(user.name)"
        self.userAge = "Vecums: \(user.age)"
    }
}

// View
import SwiftUI

struct UserView: View {
    @ObservedObject var viewModel: UserViewModel

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