Назад к вопросам
Junior
76
questionbank
К какому паттерну относится MVVM?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech 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 = "Name: \(user.name)"
self.userAge = "Age: \(user.age)"
}
}
// View
import SwiftUI
struct UserView: View {
@ObservedObject var viewModel: UserViewModel
var body: some View {
VStack {
Text(viewModel.userName)
Text(viewModel.userAge)
}
}
}