Sobes.tech
Junior

Tot welk patroon behoort MVVM?

sobes.tech AI

Antwoord van AI

Model-View-ViewModel.

Verantwoordelijkheden van componenten:

  • Model: Vertegenwoordigt gegevens en bedrijfslogica. Weet niet van View of ViewModel.
  • View: Toont gegevens en stuurt gebruikersacties naar ViewModel. Bevat geen bedrijfslogica.
  • ViewModel: Verbindt Model en View. Bevat presentatie-logica, transformeert gegevens van het Model voor de View en verwerkt gebruikersacties. Heeft geen directe verwijzingen naar de View, interactie gebeurt vaak via bindingen of notificatiepatronen (bijvoorbeeld, ObservableObject in SwiftUI).

Relatie tussen componenten:

  • De View abonneert zich op wijzigingen in het ViewModel.
  • Het ViewModel werkt de View bij bij gegevenswijzigingen in het Model of bij verwerking van gebruikersacties.
  • Het ViewModel werkt samen met het Model om gegevens te verkrijgen of op te slaan.

Voorbeeld van implementatie (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 = "Naam: \(user.name)"
        self.userAge = "Leeftijd: \(user.age)"
    }
}

// View
import SwiftUI

struct UserView: View {
    @ObservedObject var viewModel: UserViewModel

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