Sobes.tech
Junior

Welchem Muster gehört MVVM an?

sobes.tech KI

Antwort von AI

Model-View-ViewModel.

Verantwortlichkeiten der Komponenten:

  • Model: Repräsentiert Daten und Geschäftslogik. Kennt View oder ViewModel nicht.
  • View: Zeigt Daten an und sendet Benutzeraktionen an das ViewModel. Enthält keine Geschäftslogik.
  • ViewModel: Verbindet Model und View. Enthält Präsentationslogik, wandelt Daten vom Model für die View um und verarbeitet Benutzeraktionen. Hat keine direkten Referenzen zur View, die Interaktion erfolgt oft über Bindings oder Benachrichtigungsmuster (z.B. ObservableObject in SwiftUI).

Beziehung zwischen Komponenten:

  • Die View abonniert Änderungen im ViewModel.
  • Das ViewModel aktualisiert die View bei Datenänderungen im Model oder bei der Verarbeitung von Benutzeraktionen.
  • Das ViewModel interagiert mit dem Model, um Daten zu erhalten oder zu speichern.

Implementierungsbeispiel (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)
        }
    }
}