Назад к вопросам
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)
        }
    }
}