Junior
To which pattern does MVVM belong?
sobes.tech AI
Answer from AI
Model-View-ViewModel.
Responsibilities of components:
- Model: Represents data and business logic. Does not know about View or ViewModel.
- View: Displays data and sends user actions to ViewModel. Does not contain business logic.
- ViewModel: Connects Model and View. Contains presentation logic, transforms data from Model for View, and handles user actions. Does not have direct references to View, interaction often occurs through bindings or notification patterns (e.g., ObservableObject in SwiftUI).
Connection between components:
- View subscribes to changes in ViewModel.
- ViewModel updates View upon data changes from Model or when processing user actions.
- ViewModel interacts with Model to retrieve or save data.
Example implementation (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 = "Name: \(user.name)"
self.userAge = "Age: \(user.age)"
}
}
// View
import SwiftUI
struct UserView: View {
@ObservedObject var viewModel: UserViewModel
var body: some View {
VStack {
Text(viewModel.userName)
Text(viewModel.userAge)
}
}
}