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)
}
}
}