Sobes.tech
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)
        }
    }
}