Sobes.tech
Junior

Do jakiego wzorca należy MVVM?

sobes.tech AI

Odpowiedź od AI

Model-Widok-ViewModel.

Odpowiedzialność komponentów:

  • Model: Reprezentuje dane i logikę biznesową. Nie zna Widoku ani ViewModelu.
  • Widok: Wyświetla dane i wysyła akcje użytkownika do ViewModelu. Nie zawiera logiki biznesowej.
  • ViewModel: Łączy Model i Widok. Zawiera logikę prezentacji, przekształca dane z Modelu dla Widoku i obsługuje akcje użytkownika. Nie ma bezpośrednich odwołań do Widoku, interakcja często odbywa się przez wiązania lub wzorce powiadomień (np. ObservableObject w SwiftUI).

Związek między komponentami:

  • Widok subskrybuje zmiany w ViewModelu.
  • ViewModel aktualizuje Widok przy zmianie danych w Modelu lub podczas obsługi akcji użytkownika.
  • ViewModel współpracuje z Modelem w celu pobrania lub zapisania danych.

Przykład implementacji (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 = "Imię: \(user.name)"
        self.userAge = "Wiek: \(user.age)"
    }
}

// Widok
import SwiftUI

struct UserView: View {
    @ObservedObject var viewModel: UserViewModel

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