Junior
K jakému vzoru patří MVVM?
sobes.tech AI
Odpověď od AI
Model-View-ViewModel.
Odpovědnosti komponent:
- Model: Představuje data a obchodní logiku. Nezná View nebo ViewModel.
- View: Zobrazuje data a odesílá akce uživatele do ViewModel. Neobsahuje obchodní logiku.
- ViewModel: Spojuje Model a View. Obsahuje prezentační logiku, převádí data z Modelu pro View a zpracovává akce uživatele. Nemá přímé odkazy na View, interakce často probíhá přes vazby nebo vzory oznámení (například ObservableObject ve SwiftUI).
Vztah mezi komponentami:
- View se přihlásí ke změnám ve ViewModel.
- ViewModel aktualizuje View při změnách dat v Modelu nebo při zpracování akcí uživatele.
- ViewModel komunikuje s Modelem pro získání nebo uložení dat.
Příklad implementace (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 = "Jméno: \(user.name)"
self.userAge = "Věk: \(user.age)"
}
}
// View
import SwiftUI
struct UserView: View {
@ObservedObject var viewModel: UserViewModel
var body: some View {
VStack {
Text(viewModel.userName)
Text(viewModel.userAge)
}
}
}