Sobes.tech
Junior

Millisele mustrile kuulub MVVM?

sobes.tech AI

Vastus AI-lt

Model-View-ViewModel.

Komponentide vastutus:

  • Model: Esindab andmeid ja äriloogikat. Ei tea View või ViewModel kohta.
  • View: Näitab andmeid ja saadab kasutaja tegevused ViewModelile. Ei sisalda äriloogikat.
  • ViewModel: Ühendab Modeli ja View. Sisaldab esitlusloogikat, teisendab Modelist pärit andmeid View jaoks ja töötleb kasutaja tegevusi. Ei oma otseseid viiteid View-le, suhtlus toimub sageli sidumiste või teavitamismustrite kaudu (näiteks, ObservableObject SwiftUI-s).

Komponentide vahelised suhted:

  • View tellib muutused ViewModelis.
  • ViewModel uuendab View-d, kui andmed Modelist muutuvad või kui kasutaja tegevusi töödeldakse.
  • ViewModel suhtleb Modeliga andmete saamiseks või salvestamiseks.

Näide rakendamisest (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 = "Nimi: \(user.name)"
        self.userAge = "Vanus: \(user.age)"
    }
}

// View
import SwiftUI

struct UserView: View {
    @ObservedObject var viewModel: UserViewModel

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