Sobes.tech
Junior

La ce pattern aparține MVVM?

sobes.tech AI

Răspuns de la AI

Model-View-ViewModel.

Responsabilitățile componentelor:

  • Model: Reprezintă datele și logica de afaceri. Nu cunoaște View sau ViewModel.
  • View: Afișează datele și trimite acțiunile utilizatorului către ViewModel. Nu conține logică de afaceri.
  • ViewModel: Leagă Model și View. Conține logica de prezentare, transformă datele din Model pentru View și gestionează acțiunile utilizatorului. Nu are referințe directe la View, interacțiunea se face adesea prin binding-uri sau modele de notificare (de exemplu, ObservableObject în SwiftUI).

Relația dintre componente:

  • View se abonează la modificările din ViewModel.
  • ViewModel actualizează View-ul la schimbarea datelor din Model sau la procesarea acțiunilor utilizatorului.
  • ViewModel interacționează cu Model pentru a obține sau salva date.

Exemplu de implementare (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 = "Nume: \(user.name)"
        self.userAge = "Vârstă: \(user.age)"
    }
}

// View
import SwiftUI

struct UserView: View {
    @ObservedObject var viewModel: UserViewModel

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