Junior
K akému vzoru patrí MVVM?
sobes.tech AI
Odpoveď od AI
Model-View-ViewModel.
Zodpovednosti komponent:
- Model: Predstavuje údaje a obchodnú logiku. Nevie o View alebo ViewModel.
- View: Zobrazuje údaje a odosiela akcie používateľa do ViewModel. Neobsahuje obchodnú logiku.
- ViewModel: Spája Model a View. Obsahuje prezentačnú logiku, transformuje údaje z Modelu pre View a spracováva akcie používateľa. Nemá priame odkazy na View, interakcia sa často deje cez väzby alebo vzory oznámení (napríklad, ObservableObject v SwiftUI).
Vztah medzi komponentami:
- View sa prihlási na zmeny vo ViewModel.
- ViewModel aktualizuje View pri zmenách v údajoch z Modelu alebo pri spracovaní akcií používateľa.
- ViewModel komunikuje s Modelom na získanie alebo uloženie údajov.
Príklad implementácie (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 = "Meno: \(user.name)"
self.userAge = "Vek: \(user.age)"
}
}
// View
import SwiftUI
struct UserView: View {
@ObservedObject var viewModel: UserViewModel
var body: some View {
VStack {
Text(viewModel.userName)
Text(viewModel.userAge)
}
}
}