Sobes.tech
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)
        }
    }
}