Junior
A quale pattern appartiene MVVM?
sobes.tech AI
Risposta dell'AI
Modello-View-ViewModel.
Responsabilità dei componenti:
- Modello: Rappresenta i dati e la logica di business. Non conosce la View o il ViewModel.
- View: Visualizza i dati e invia le azioni dell'utente al ViewModel. Non contiene logica di business.
- ViewModel: Collega il Modello e la View. Contiene la logica di presentazione, trasforma i dati del Modello per la View e gestisce le azioni dell'utente. Non ha riferimenti diretti alla View, l'interazione avviene spesso tramite binding o pattern di notifica (ad esempio, ObservableObject in SwiftUI).
Relazioni tra componenti:
- La View si iscrive alle modifiche nel ViewModel.
- Il ViewModel aggiorna la View quando i dati del Modello cambiano o quando gestisce le azioni dell'utente.
- Il ViewModel interagisce con il Modello per ottenere o salvare dati.
Esempio di implementazione (SwiftUI):
// Modello
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 = "Nome: \(user.name)"
self.userAge = "Età: \(user.age)"
}
}
// View
import SwiftUI
struct UserView: View {
@ObservedObject var viewModel: UserViewModel
var body: some View {
VStack {
Text(viewModel.userName)
Text(viewModel.userAge)
}
}
}