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