Junior
Кой модел принадлежи на MVVM?
sobes.tech AI
Отговор от AI
Model-View-ViewModel.
Отговорностите на компонентите:
- Model: Представлява данните и бизнес логиката. Не знае за View или ViewModel.
- View: Показва данните и изпраща действията на потребителя към ViewModel. Не съдържа бизнес логика.
- ViewModel: Свързва Model и View. Съдържа логика за презентация, преобразува данните от Model за View и обработва действията на потребителя. Няма директни връзки към View, взаимодействието често става чрез биндинги или модели за уведомяване (например, ObservableObject в SwiftUI).
Връзката между компонентите:
- View се абонира за промените във ViewModel.
- ViewModel актуализира View при промени в данните от Model или при обработка на действията на потребителя.
- ViewModel взаимодейства с Model за получаване или запазване на данни.
Пример за реализация (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 = "Име: \(user.name)"
self.userAge = "Възраст: \(user.age)"
}
}
// View
import SwiftUI
struct UserView: View {
@ObservedObject var viewModel: UserViewModel
var body: some View {
VStack {
Text(viewModel.userName)
Text(viewModel.userAge)
}
}
}