Junior
Кој патерн припада MVVM?
sobes.tech АИ
Одговор од АИ
Model-View-ViewModel.
Odgovornosti komponenti:
- Model: Predstavlja podatke in poslovno logiko. Ne pozna View ali ViewModel.
- View: Prikazuje podatke in pošilja akcije uporabnika v ViewModel. Ne vsebuje poslovne logike.
- ViewModel: Povezuje Model in View. Vsebuje logiko predstavitve, pretvarja podatke iz Modela za View in obravnava akcije uporabnika. Nima neposrednih povezav z View, interakcija se pogosto izvaja prek vezav ali vzorcev obveščanja (npr. ObservableObject v SwiftUI).
Povezava med komponentami:
- View se naroči na spremembe v ViewModel.
- ViewModel posodobi View ob spremembah podatkov v Modelu ali ob obdelavi akcij uporabnika.
- ViewModel sodeluje z Modelom za pridobivanje ali shranjevanje podatkov.
Primer implementacije (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 = "Ime: \(user.name)"
self.userAge = "Starost: \(user.age)"
}
}
// View
import SwiftUI
struct UserView: View {
@ObservedObject var viewModel: UserViewModel
var body: some View {
VStack {
Text(viewModel.userName)
Text(viewModel.userAge)
}
}
}