Junior
Milyen mintához tartozik az MVVM?
sobes.tech MI
Válasz az MI-től
Model-View-ViewModel.
A komponensek felelősségei:
- Model: Az adatok és az üzleti logika reprezentációja. Nem ismeri a View-t vagy a ViewModel-t.
- View: Megjeleníti az adatokat és továbbítja a felhasználói műveleteket a ViewModel-nek. Nem tartalmaz üzleti logikát.
- ViewModel: Összeköti a Model-t és a View-t. Tartalmazza a prezentációs logikát, átalakítja a Model-ből származó adatokat a View számára, és kezeli a felhasználói műveleteket. Nincs közvetlen hivatkozása a View-ra, az interakció gyakran kötéseken vagy értesítési mintákon keresztül történik (pl. ObservableObject SwiftUI-ban).
A komponensek közötti kapcsolat:
- A View feliratkozik a ViewModel-ben történő változásokra.
- A ViewModel frissíti a View-t, amikor a Model adatai változnak vagy a felhasználói műveleteket dolgozza fel.
- A ViewModel a Model-lel való együttműködés révén szerzi be vagy menti az adatokat.
Implementációs példa (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 = "Név: \(user.name)"
self.userAge = "Kor: \(user.age)"
}
}
// View
import SwiftUI
struct UserView: View {
@ObservedObject var viewModel: UserViewModel
var body: some View {
VStack {
Text(viewModel.userName)
Text(viewModel.userAge)
}
}
}